[問題] 陣列名稱&指標常數問題
關於"陣列名稱的位址"跟"陣列第一個元素的位址"相同但值不同的問題
&name=0x0000 &name[0]=0x0000
name =0x0000 name[0]=1
在板上只看到LPH66大的回文,其實看不太懂
上網看大部分的解釋大概是說:
如果有一個陣列int name[3]={1,2,3},
&name[0]=0x0000
&name[1]=0x0004
&name[2]=0x0008
其陣列名稱name是一個指向陣列第一個元素的位址的指標,也就是指標常數
name=0x0000
name+1=0x0004
name+2=0x0008
如果陣列名稱name碰到兩個operator:sizeof() or &
變成&name就會是指到整個陣列的位址,所以&name+1就會變成0x000C
意思是說陣列名稱(指標常數)其實並沒有自身的位址的概念?
如果只是取陣列元素如name[0]那就會自動decay(網路上都用這個詞)成指標 *(name+0)
如果是使用&name那只是純粹得到整個陣列的位址? &name並不是指標常數的位址?
不知道這樣問大家是否看的懂? 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.22.77
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1485934980.A.5D8.html
推
02/01 16:09, , 1F
02/01 16:09, 1F
推
02/01 16:34, , 2F
02/01 16:34, 2F
→
02/01 17:01, , 3F
02/01 17:01, 3F
→
02/01 17:01, , 4F
02/01 17:01, 4F
→
02/01 17:39, , 5F
02/01 17:39, 5F
※ 編輯: anoymouse (118.160.31.81), 02/01/2017 17:40:20
推
02/01 19:40, , 6F
02/01 19:40, 6F
→
02/01 19:42, , 7F
02/01 19:42, 7F
→
02/01 19:43, , 8F
02/01 19:43, 8F
就是在問陣列名稱的位址跟第一個元素的位址一樣 可是同一個位址卻有兩個不一樣的值
一個是指到陣列第一個元素的位址,一個是name[0]的內容0
→
02/01 20:11, , 9F
02/01 20:11, 9F
※ 編輯: anoymouse (118.160.31.81), 02/01/2017 21:42:50
推
02/01 21:56, , 10F
02/01 21:56, 10F
→
02/01 21:57, , 11F
02/01 21:57, 11F
→
02/01 21:58, , 12F
02/01 21:58, 12F
推
02/02 09:46, , 13F
02/02 09:46, 13F
→
02/02 09:48, , 14F
02/02 09:48, 14F
→
02/02 09:49, , 15F
02/02 09:49, 15F
→
02/02 18:31, , 16F
02/02 18:31, 16F
推
02/02 18:39, , 17F
02/02 18:39, 17F
→
02/02 18:39, , 18F
02/02 18:39, 18F
重寫一遍了 發現沒問清楚
※ 編輯: anoymouse (223.136.67.39), 02/02/2017 19:38:30
※ 編輯: anoymouse (118.160.31.81), 02/02/2017 20:04:09
※ 編輯: anoymouse (118.160.31.81), 02/02/2017 21:20:00
→
02/03 02:16, , 19F
02/03 02:16, 19F
→
02/03 02:43, , 20F
02/03 02:43, 20F
推
02/03 09:10, , 21F
02/03 09:10, 21F
討論串 (同標題文章)