[問題] 關於傳陣列到函式的問題

看板C_and_CPP作者時間14年前 (2011/04/26 10:57), 編輯推噓2(2010)
留言12則, 5人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) N 問題(Question): 從資料上來看,如果傳陣列到其他函式中,傳的應該是陣列的起始位址,我進行了 下面的測試,結果與預期的有所出入,想請問是不是我的觀念錯了? 餵入的資料(Input): N 預期的正確結果(Expected Output): 下列的兩個cout結果相同 錯誤結果(Wrong Output): 1.Array Addr in main: 0x22ff60 2.Array Addr in Func: 0x22ff20 程式碼(Code):(請善用置底文網頁, 記得排版) 因為很短就直接po了: void Func(char Array[]) { cout<<"2.Array Addr in Func:"<<hex<<&Array<<endl; } int main() { char Array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; cout<<"1.Array Addr in main:"<<hex<<&Array<<endl; Func(Array); return 0; } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.212.238

04/26 11:00, , 1F
您應該把&拿掉,就會一樣了
04/26 11:00, 1F

04/26 11:02, , 2F
謝謝你的提醒,我傳入Func的是"指標",所以cout中不該再
04/26 11:02, 2F

04/26 11:02, , 3F
取址一次。
04/26 11:02, 3F

04/26 12:53, , 4F
是敬語! @_@
04/26 12:53, 4F

04/26 13:54, , 5F
char Array[] 為一指標 &Array為指標的Address
04/26 13:54, 5F

04/26 13:55, , 6F
把&拿掉是正解 但用cout會顯示不出來
04/26 13:55, 6F

04/26 13:55, , 7F
printf("\n2.Array Addr in Func: %x \n" , Array);
04/26 13:55, 7F

04/26 14:13, , 8F
...
04/26 14:13, 8F

04/26 14:29, , 9F
cout印得出指標阿,原po不是印出來了@@"
04/26 14:29, 9F

04/26 14:32, , 10F
把&拿掉還真的印不出來XD 搞錯了
04/26 14:32, 10F

04/26 14:44, , 11F
其實還是可以印啦...只是要轉成char以外的型別...如int
04/26 14:44, 11F

04/26 16:02, , 12F
轉 int 可能會炸
04/26 16:02, 12F
文章代碼(AID): #1DjZIddC (C_and_CPP)
文章代碼(AID): #1DjZIddC (C_and_CPP)