推 milen:存地址跟存資料是不一樣的"位址" 09/25 16:07
推 stupid0319:array={0x22ff31} << 這個是什麼東西???? 09/25 16:55
先感謝各位推文,就是如果我
printf("%d",array);
那他會輸出是0x22ff31
如果我輸出
printf("%p",&array);
那他的地址也是022ff31
那問題就是如果我們輸出
printf("%p",&array[0]);
地址也是022ff31,也就是array跟array[0],其實是同一個地址
但是array[0]的值是31
我們輸出
printf("d",array[0]);
他會輸出31
這樣感覺就很矛盾,同樣輸出同一個地址的"值"
輸出array是0x22ff31 而輸出array[0]卻是31
→ EdisonX:大括號不要亂加,那是有意義的。 09/25 17:07
→ EdisonX:另原意應是,這個陣列的「位址值」,就是這個陣列第一個元 09/25 17:08
→ EdisonX:素的「位址值」,而你所的 31 指的是第一個元素「內含值」 09/25 17:08
※ 編輯: Fan383 來自: 134.208.1.29 (09/25 17:35)
→ MOONRAKER:為了方便,這兩個值是相等的。你無法找出「存array位址 09/25 17:28
→ MOONRAKER:的記憶體」的位址,否則會沒完沒了 09/25 17:29
→ MOONRAKER:(喔!怎麼這麼像理髮師的故事) 09/25 17:29
推 LPH66:以我之前回的一篇文章的說法來說 0x22ff31 這個指標是綁在 09/25 17:35
→ LPH66:array 這個符號上 當有其他的位址運算需求時(如索引陣列) 09/25 17:36
→ LPH66:它就會直接代入 0x22ff31 這位置 因此產生程式碼時 09/25 17:36
→ LPH66:0x22ff31 這個值會直接出現在指令上 09/25 17:37
→ LPH66:它不會再用一個空間來存 "0x22ff31" 這個值 09/25 17:37
推 stupid0319:這就是傳說中C語言新手必需經過指標障礙嗎?XD 09/25 17:43
推 stupid0319:你把遊戲修改大師拿出來,隨便改個遊戲就知道什麼叫指標 09/25 17:45
推 BlazarArc:原po問題不是指標吧,array name在size_of跟&不轉型指標 09/25 17:59
推 BlazarArc:這樣講好像不太對 正在看C FAQ 09/25 18:07
→ diabloevagto:我記得之前有人糾正過說"陣列並不是指標" 09/25 18:40