作者snowlike (snowlike)
看板C_and_CPP
標題Re: [問題] 一個關於陣列和指標的問題
時間Wed Mar 31 16:57:09 2010
示意:
**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
推 holymars:*(*(ary+i)+j) 表現的是指標的行為沒錯 陣列會decay 03/31 23:29
→ holymars:成指標 03/31 23:29
→ holymars:出錯的點在於 ary在運算裡是decay成「指向int[3]的指標」 03/31 23:30
→ holymars:int** ptr是指向int*的指標 int[3]和int*的sizeof是不一 03/31 23:30
→ holymars:樣的.. 03/31 23:30
→ snowlike:我視*為取值的表現來表達,若視decay為其性質,我也認同 03/31 23:52