一道指標筆試題

2021-08-31 11:33:57 字數 1410 閱讀 4932

就是他

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 ...