[問題] 詢問一個洪維恩書上的觀念

看板C_and_CPP (C/C++)作者 (Fan)時間13年前 (2012/09/25 15:32), 編輯推噓8(8012)
留言20則, 7人參與, 最新討論串1/2 (看更多)
我一直覺得怪怪的,詢問一下版上有沒有更好的講法 在陣列跟指標的部分 書上說:array陣列名稱"本身就是個指標,他的值是指向第一元素的地址 假設我宣告一個陣列 int array[5]; 也就是若陣列地址為下: array[0]={31}; //地址為0x22ff31 array[1]={70}; //0x22ff35 array[2]={12}; //0x22ff39 array[3]={3}; //0x22ff3d array[4]={88}; //0x22ff41 而array本身是個指標,它的值為第一個元素的地址, 而它的地址也是同一個地址,如下 array={0x22ff31} //而這個指標本身的地址又是0x22ff31 那我們知道地址是唯一的,若以指標來看來,它的值為0x22ff31 若以第一個元素來看,他的值又是31 這樣不是很矛盾嗎? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.1.29

09/25 16:07, , 1F
存地址跟存資料是不一樣的"位址"
09/25 16:07, 1F

09/25 16:55, , 2F
array={0x22ff31} << 這個是什麼東西????
09/25 16:55, 2F
先感謝各位推文,就是如果我 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

09/25 17:07, , 3F
大括號不要亂加,那是有意義的。
09/25 17:07, 3F

09/25 17:08, , 4F
另原意應是,這個陣列的「位址值」,就是這個陣列第一個元
09/25 17:08, 4F

09/25 17:08, , 5F
素的「位址值」,而你所的 31 指的是第一個元素「內含值」
09/25 17:08, 5F
※ 編輯: Fan383 來自: 134.208.1.29 (09/25 17:35)

09/25 17:28, , 6F
為了方便,這兩個值是相等的。你無法找出「存array位址
09/25 17:28, 6F

09/25 17:29, , 7F
的記憶體」的位址,否則會沒完沒了
09/25 17:29, 7F

09/25 17:29, , 8F
(喔!怎麼這麼像理髮師的故事)
09/25 17:29, 8F

09/25 17:35, , 9F
以我之前回的一篇文章的說法來說 0x22ff31 這個指標是綁在
09/25 17:35, 9F

09/25 17:36, , 10F
array 這個符號上 當有其他的位址運算需求時(如索引陣列)
09/25 17:36, 10F

09/25 17:36, , 11F
它就會直接代入 0x22ff31 這位置 因此產生程式碼時
09/25 17:36, 11F

09/25 17:37, , 12F
0x22ff31 這個值會直接出現在指令上
09/25 17:37, 12F

09/25 17:37, , 13F
它不會再用一個空間來存 "0x22ff31" 這個值
09/25 17:37, 13F

09/25 17:43, , 14F
這就是傳說中C語言新手必需經過指標障礙嗎?XD
09/25 17:43, 14F

09/25 17:45, , 15F
你把遊戲修改大師拿出來,隨便改個遊戲就知道什麼叫指標
09/25 17:45, 15F

09/25 17:59, , 16F
原po問題不是指標吧,array name在size_of跟&不轉型指標
09/25 17:59, 16F

09/25 18:00, , 17F
http://0rz.tw/Js3xE (stackoverflow) 其實蠻好google的
09/25 18:00, 17F

09/25 18:07, , 18F
這樣講好像不太對 正在看C FAQ
09/25 18:07, 18F

09/25 18:16, , 19F
http://0rz.tw/yR7a2 (C FAQ) 發現其實上面推文有講了XD
09/25 18:16, 19F

09/25 18:40, , 20F
我記得之前有人糾正過說"陣列並不是指標"
09/25 18:40, 20F
文章代碼(AID): #1GOLtogc (C_and_CPP)
文章代碼(AID): #1GOLtogc (C_and_CPP)