【发布时间】:2014-11-22 14:30:25
【问题描述】:
到目前为止,我大部分时间都在使用返回指向数组的指针的函数,但现在我开始使用 void 函数来引用数组,所以我想知道下面哪一个代码更好用,为什么?
void doSomething(int** &ary)
{
ary = new int*[3];
for (int i = 0; i < 3; ++i)
ary[i] = new int[3];
ary[0][0] = 1;
ary[0][1] = 2;
}
int** ary=NULL;
doSomething(ary);
或者这个
int** doSomething1()
{
int **ary = new int*[3];
for (int i = 0; i < 3; ++i)
ary[i] = new int[3];
ary[0][0] = 1;
ary[0][1] = 2;
return ary;
}
int **ary1=doSomething1();
【问题讨论】:
-
见仁见智。第二个版本没有第一个那么糟糕。
-
还有什么会更好?
-
使用代表您要返回的任何内容的类型。指向指针的指针可能意味着太多东西。
-
两者都不是更好,请返回
std::vector,直到您有真正的理由不这样做。然后,切换到 C++ 11 移动语义。
标签: c++ pointers multidimensional-array