我有一個簡單的C++有關將數組傳遞給函數foo()的問題。假設我有兩個陣列A和B:在堆上傳遞數組並在堆棧上運行
double* A=new double[3];
和
double B[3];
當我通過既其旨在操縱兩個陣列的功能
foo(double* A; double *B)
。然而,通過執行
foo(A,B)
FOO作用於A的副本和離開FOO時()只將更改到B保留。 這是不是這種情況,如果foo的定義爲
foo(double* &A; double *B).
我的問題:爲什麼是副本的創建,雖然我在第一循環中的如雙* A的地址(如B的情況下) foo()的例子?
第一行代碼不能編譯。另外,你傳遞給函數的是兩種情況下的指針。在這兩種情況下,函數都可以通過這些指針來修改數組。請改善你的問題。 – sellibitze 2011-06-07 13:09:11
在foo的第一個聲明中,兩個指針都是按值傳遞的,所以在foo中你將得到A和B的副本。在第二個聲明中,A是通過引用傳遞的,它在引擎之下是一個指向指針的指針,允許你在內部改變A。你是否意識到這一點,或者我誤解了你的問題? – 2011-06-07 13:11:22
顯示你的foo()方法的代碼.. – 2011-06-07 13:19:00