看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
nowar100:您應該把&拿掉,就會一樣了 04/26 11:00
icetofux:謝謝你的提醒,我傳入Func的是"指標",所以cout中不該再 04/26 11:02
icetofux:取址一次。 04/26 11:02
loveme00835:是敬語! @_@ 04/26 12:53
ouyang0916:char Array[] 為一指標 &Array為指標的Address 04/26 13:54
ouyang0916:把&拿掉是正解 但用cout會顯示不出來 04/26 13:55
ouyang0916:printf("\n2.Array Addr in Func: %x \n" , Array); 04/26 13:55
loveme00835:... 04/26 14:13
TsinTa:cout印得出指標阿,原po不是印出來了@@" 04/26 14:29
TsinTa:把&拿掉還真的印不出來XD 搞錯了 04/26 14:32
TsinTa:其實還是可以印啦...只是要轉成char以外的型別...如int 04/26 14:44
loveme00835:轉 int 可能會炸 04/26 16:02