将数组指针传递给函数

时间:2013-05-30 17:04:17

标签: c++ arrays pointers reference

为什么我应该在以下代码中的类型名称(*&)之后使用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;
}

2 个答案:

答案 0 :(得分:5)

  

不是指向指针的指针吗?

不,它是对指针的引用。

  

那我为什么不用**呢?

你可以这样做,但它使得在调用方和函数内的使用更复杂一些。但是,你可以用任何一种方式编写一个具有相同整体效果的函数。

答案 1 :(得分:2)

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