Re: [問題] 一個關於陣列和指標的問題

看板C_and_CPP (C/C++)作者 (snowlike)時間16年前 (2010/03/31 16:57), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串4/4 (看更多)
示意: **ptr ┌info *p ┌info value ┌info *ptr │ p │ &value ┴ ptr │ &p ┴ &ptr ┴ ary[].. ┌info &ary ┴ p 只是利用陣列 ary 連續的特性來達到操作的目的,就像對 value 一樣 至於你好奇的 *(*(TYPE+i)+j) ary 可以為什麼轉成 ptr 不行 只能說 *(*(ary+i)+j) 表現的並不是指標的行為,只是通用於[]..轉換 有興趣的話可以印出 printf("%p", &ary); printf("%p", ary); printf("%p", *ary); 來觀察(以二維為例) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.184.50

03/31 23:29, , 1F
*(*(ary+i)+j) 表現的是指標的行為沒錯 陣列會decay
03/31 23:29, 1F

03/31 23:29, , 2F
成指標
03/31 23:29, 2F

03/31 23:30, , 3F
出錯的點在於 ary在運算裡是decay成「指向int[3]的指標」
03/31 23:30, 3F

03/31 23:30, , 4F
int** ptr是指向int*的指標 int[3]和int*的sizeof是不一
03/31 23:30, 4F

03/31 23:30, , 5F
樣的..
03/31 23:30, 5F

03/31 23:52, , 6F
我視*為取值的表現來表達,若視decay為其性質,我也認同
03/31 23:52, 6F
文章代碼(AID): #1BimvdAu (C_and_CPP)
文章代碼(AID): #1BimvdAu (C_and_CPP)