我将数组传递给函数然后修改它有问题。例如:
void foo(int ** a) {
int * b = new int[3]
//Initialize b, i.e b = {3, 2, 1}
a = &b;
//*a = {3, 2, 1}
}
int * c = new int[3]
//Initialize c; c = {1, 2, 3}
foo(&c);
// c is still {1, 2, 3}. Why?
我不确定为什么c
没有指向与b
相同的数组。
答案 0 :(得分:5)
a
的类型为int**
,并且按值传递,因此修改它不会修改c
。
要修改它,您必须这样做:
*a = b;
通过执行此操作,您将b
的地址分配给*a
指向的变量(对应于c
),因此它们将指向相同的数组。