将数组指针传递给函数
Passing array pointers to functions
为什么在下面的代码中,我应该在类型名称(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++,也不会那么简单,使用引用可以让你不用担心如何通过引用传递。
相关文章:
- 第 i 个元素返回 i 的函数数组
- 使用嵌套函数数组是个好主意吗?
- 正确实现类函数数组
- 试图引用已删除函数数组的相等运算符
- 如何在静态函数中使用成员函数数组
- 无法创建函数数组
- 构造函数数组
- 使用开关或定义函数数组 - 更快
- 编写一个函数,该函数将覆盖主函数数组中的值
- 可以像'funs[1]();'一样调用的函数数组
- std::AVX内部函数数组
- 如果数组大小未知,如何将函数数组作为参数传递
- 从函数数组中获取值
- 使用元编程在编译时初始化函数数组
- 将C函数数组转换为C++函数指针数组
- 复制构造函数 [数组] C++
- 添加函数数组并随机选择其中一个
- 指针到私有成员函数数组
- 可以单独声明函数数组的元素
- (c++)将main中的随机值保存到函数数组中