題目:
#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...