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

Mar*_*vic 3 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?
Run Code Online (Sandbox Code Playgroud)

我不确定为什么c不指向同一个数组b.

Mat*_* F. 5

a有类型int**,它是按值传递的,因此修改它不会修改c.

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

  *a = b;
Run Code Online (Sandbox Code Playgroud)

通过执行此操作,您可以将地址指定给b指向的变量*a(对应于c),因此它们将指向同一个数组.