我想學C++初學者。道歉,如果我的問題沒有適當的結構?我用陣列的工作,結果發現,我可以操作存儲在通過的功能的數組中的值,而無需使用&
或參照符號傳遞。我不明白這是怎麼可能的,因爲缺乏&
標誌意味着它是按值傳遞和複製由被操縱。數組如何通過引用或值或指針在C++中傳遞?
在其他地方,我讀了數組由指針傳遞的,如果這是我沒有使用任何明確的非關聯化來操作數據的情況。你能解釋一下當我傳遞數組時實際發生了什麼嗎?
邊注:爲什麼我有指定列大小傳遞一個二維數組到一個函數是什麼時候?
我想學C++初學者。道歉,如果我的問題沒有適當的結構?我用陣列的工作,結果發現,我可以操作存儲在通過的功能的數組中的值,而無需使用&
或參照符號傳遞。我不明白這是怎麼可能的,因爲缺乏&
標誌意味着它是按值傳遞和複製由被操縱。數組如何通過引用或值或指針在C++中傳遞?
在其他地方,我讀了數組由指針傳遞的,如果這是我沒有使用任何明確的非關聯化來操作數據的情況。你能解釋一下當我傳遞數組時實際發生了什麼嗎?
邊注:爲什麼我有指定列大小傳遞一個二維數組到一個函數是什麼時候?
C-陣列衰變到指針。
一些聲明誤導太
void foo(const char name[42]);
實際上
void foo(const char* name);
只有參考/指針(難看的語法:/)允許以保持尺寸:
void foo(const char (&name)[42]);
void foo(const char (*name)[42]);
陣列可以衰減到一個指向第一個元素的指針,它是通過值傳遞給函數的指針。這個指針衰減是避免原始數組和使用適當的容器類型的原因之一(可能是'std :: vector') – user463035818
數組是通過指針傳遞的。如果你使用arr [i],它相當於*(arr + i),其中arr是數組的起始地址。 – user1438832
...我不應該在評論中回答,但我確信有一個完美的重複,只是沒有找到它atm – user463035818