看板 C_and_CPP 關於我們 聯絡資訊
以下是我的測試程式: int arr[5]; int *ptr=(int*)&arr; //QQ cout.hex; cout<<"arr="<<arr<<endl; cout<<"&arr="<<&arr<<endl; 問題: 為什麼印出的arr跟&arr是一樣,而且QQ處為什麼可以這樣轉型? 先謝摟 -- 就算是friend 最後還是會有個end 就算要fuck 起初也要有fu 就算是lover 最後還是會over 就算是believe 中間還是有個lie 就算是forget 也曾經有個get -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.42.118
That5566is78:array本身就是指標 <-這對嗎 請強者解釋 04/30 03:47
dendrobium:array不等於pointer, 本篇就是很明顯的例子 04/30 04:21
hilorrk:array名稱只是很多運算上很像指標 但那只是在compile time 04/30 04:45
hilorrk:我們實際上並沒有真的用一個指標的位置去存array開頭 04/30 04:46
hilorrk:且array在compile time除了記錄開頭外還有長度等其他資訊 04/30 04:47
holymars:arr會decay成int* &arr是 int(*)[5] 指向int[5]的指標 04/30 05:10
holymars:雖然arr和&arr的值一樣 但是type不一樣 04/30 05:10
holymars:但是,因為它們都是指標 所以可以用C-style強制轉型 04/30 05:11
holymars:我覺得array會decay成指標這件事應該要列入FAQ了 04/30 05:11
holymars:每隔一段時間就會有人問一次.. 04/30 05:11
That5566is78:感謝 04/30 08:35
Dreamer77:那(int*)&arr有特別用意嗎 還是就跟 arr 效果一樣 04/30 09:15
holymars:效果一樣 04/30 14:16