我有一个简单的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外部将看不到它-指针的副本将传递给函数,但当然它仍指向同一数组。

09-04 04:24
查看更多