我有一个简单的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