修改指向函数中数组的指针

时间:2016-07-05 13:37:13

标签: c++ pointers

我将数组传递给函数然后修改它有问题。例如:

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相同的数组。

1 个答案:

答案 0 :(得分:5)

a的类型为int**,并且按值传递,因此修改它不会修改c

要修改它,您必须这样做:

  *a = b;

通过执行此操作,您将b的地址分配给*a指向的变量(对应于c),因此它们将指向相同的数组。