将数组指针传递给函数

Passing array pointers to functions

本文关键字:函数 数组 指针      更新时间:2023-10-16

为什么在下面的代码中,我应该在类型名称(T*&)之后使用*& ?a不是指针指向指针吗?如果是,那么为什么我不应该使用**代替?

template <class T> void CreateArray(T*& a, int n)
{
   a = new double[n];
}
int main()
{
  double* a;
  CreateArray<double>(a,3);
  return 0;
}

不是指向指针的指针吗?

不,它是对指针的引用。

那么为什么我不用**代替呢?

可以这样做,但是这会使调用端和函数内部的使用变得更加复杂。但是,您可以用任何一种方式编写具有相同总体效果的函数。

T*&是对指针的引用,现在虽然幕后的引用可能被实现为指针,但它与T**不同。你当然可以使用T **来完成同样的事情,但它不会是惯用的c++,也不会那么简单,使用引用可以让你不用担心如何通过引用传递。