C語言指標的問題,新手。 尋求指導

發布 科技 2024-08-21
6個回答
  1. 匿名使用者2024-02-01

    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 其實只是陣列的名稱,也就是陣列的第乙個位址,它的元素是指向字串的指標。

    希望對你有所幫助!

  2. 匿名使用者2024-01-31

    (name + 1) 與 name[1] 相同,用於獲取內容。

    但名字就是位址。

  3. 匿名使用者2024-01-30

    name+1 是位址。

    name[1] 是乙個字串值。

  4. 匿名使用者2024-01-29

    name+1 的型別為 char **,name[1] 的型別為 char *,型別不同。

  5. 匿名使用者2024-01-28

    name+1 是指向指標的指標。

    name[1] 是乙個指標。

    不是乙個型別。

  6. 匿名使用者2024-01-27

    第乙個問題顯然是答案。

    第二個問題顯然是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 一書。

相關回答
17個回答2024-08-21

p5[1] 取第二個字元的位址,即'b',列印結果為b,取p5[0]+1"def",列印結果為 def >>>More

5個回答2024-08-21

字串是儲存字串的字串指標變數"i love china!"。 >>>More

7個回答2024-08-21

a) int *b[ ] 錯誤,指標必須指向受控的已知記憶體位址。 >>>More

14個回答2024-08-21

這其實是可以理解的。

只需將 %s、%c、%p 放在一起即可。 >>>More

12個回答2024-08-21

當然,如果將 p 替換為 int 指標,p++ 會一次跳轉 4 個字元位址。 >>>More