我有一个简单的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).
我的问题:为什么在foo()的第一个示例中,我像double * A一样传递A的地址(如B的情况),为什么还要创建一个create的副本?
最佳答案
在foo内部,您到底在做什么?在这两种情况下,对对象本身的更改都应该在foo外可见。如果您尝试更改指针A的值,则在foo外部将看不到它-指针的副本将传递给函数,但当然它仍指向同一数组。