-
char *name;由於優先順序高於 *,所以 first name 是乙個陣列,它的元素是 char *,即 name 是指向 char 型別的指標陣列,name[0] 是指向 char 型別的指標"one"String,同樣 name[1] 也是 char 型別的指標,他指向它"two",而 char **p 表示 p 是指向指標的指標,因此。
顯然 p=name[1] 不是 true,兩個資料型別都不匹配 p 是指向指標的指標,而 name[1] 是指向 char 型別的指標。
printf("%s",name[1]) 為什麼不用 printf("%s",name+1),對於這個問題,也是資料型別不匹配,printf("%s",name[1]) 可以更改為 printf("%s",*(name+1));name[1] 其實可以寫成乙個指標引用,即 *(name+1),這兩個方法是等價的,name 其實只是陣列的名稱,也就是陣列的第乙個位址,它的元素是指向字串的指標。
希望對你有所幫助!
-
(name + 1) 與 name[1] 相同,用於獲取內容。
但名字就是位址。
-
name+1 是位址。
name[1] 是乙個字串值。
-
name+1 的型別為 char **,name[1] 的型別為 char *,型別不同。
-
name+1 是指向指標的指標。
name[1] 是乙個指標。
不是乙個型別。
-
第乙個問題顯然是答案。
第二個問題顯然是ACD陣列的越界錯誤 正確答案是b,第三個問題a是x[3]是3,毫無疑問,b p1是x[3]的位址 ++是x[3]的位址 ++是x[2]的位址也是3 c p1是x[2]的位址, 下面的++是表示式的最後一次執行,不用括號,d也是x[3]的位址,++顯然是正確的。
所以只有 c 是錯的,答案是 c
這個問題庫的正確答案是無法給出的,顯然不值得你練習,建議換個地方做題第二個問題太明顯了,陣列10的大小最多下標9,而這個問題的答案是錯誤的,可見提問者的水平。第乙個問題無論如何都離不開c和d,答案其實是b,對智商的侮辱太大了。不要打擾它,如果你想學習指標,請閱讀 C-pointers and traps 一書。