作者icetofux ()
看板C_and_CPP
標題[問題] 關於傳陣列到函式的問題
時間Tue Apr 26 10:57:40 2011
開發平台(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