關於指標的一道筆試題

2021-09-26 07:41:37 字數 979 閱讀 3966

題目:

#include#includeint main()

; char**cp = ;

char***cpp = cp;

printf("%s\n", **++cpp);

printf("%s\n", *--*++cpp + 3);

printf("%s\n", *cpp[-2] + 3);

printf("%s\n", cpp[-1][-1] + 1);

system("pause");

return 0;

}

首先解這道題需要我們先畫乙個記憶體圖來幫助理解

首先是這個****++cpp*操作 得到0xa08

*操作 得到0x300

printf(」%s「,0x300)得到ponit

第二個***--*++cpp + 3*操作得到0xa04

–得到0xa00

*操作得到0x100

+3 得到0x103

列印出來結果為er

第三個***cpp[-2] + 3)

cpp此時儲存的位址為0xb08

[-2] 減2再解引用 得到 0xa0c

*操作得到0x400

+3得到0x403

列印出來結果為st

第四個**cpp[-1][-1] + 1

最初的cpp :0xb08

[-1]:0xa08

[-1] :0x200

+1 0x201

列印出來為ew

驗證一下:

一道關於 g 筆試題

正則裡 g 表示全域性 global 的意思,比如當替換字串時,如果正則不加g,則只替換一次。str hello,jack,hello,lily reg hello res str.replace reg,hi console.log res hi,jack,hello,lily 第二個hello未...

一道關於 g 筆試題

正則裡 g 表示全域性 global 的意思,比如當替換字串時,如果正則不加g,則只替換一次。str hello,jack,hello,lily reg hello res str.replace reg,hi console.log res hi,jack,hello,lily 第二個hello未...

一道筆試題

看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...