就是他
int
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)
;return0;
}
結果是什麼?
1.cpp是cp陣列中第乙個元素的位址,++cpp是cp中第二個元素的位址
*++cpp是cp中第二個元素的內容,是c中第3個元素的位址,在解引用得到"point"首元素位址,所以列印"point";
++cpp, cpp的值會發生變化,影響下面計算
2.開始時
++cpp後:
*++cpp得到cp第3個元素內容,即c第2個元素位址,-- * ++cpp得到c中第1個元素位址(cp中第二個元素內容發生改變)
*-- *++cpp得到c首元素內容,即"enter"首元素位址, *-- *++cpp + 3到"enter"第4個元素位址,所以列印"er";
3. cpp[-2] == *(cpp + (-2)) == *(cpp - 2)
注意:與上面++cpp不同,這時cpp的值不會改變
所以cpp[-2]值為cp陣列首元素內容,即c陣列第4個元素的位址,在解引用得到"first"的首元素位址,加3得到 『s』 的位址,所以會列印"st";
4.cpp[-1] == *(cpp - 1),所以cpp[-1]是cp第二個元素的內容,即c第3個元素的位址,cpp[-1][-1] == *(cpp[-1] - 1)將得到c第2個元素的內容('n』的位址),再+1得到』e』的位址,所以列印"ew"。
關於指標的一道筆試題
題目 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 首先解這道題需要我...
一道筆試題
看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...
一道筆試題
上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...