1

以下函数声明在 C/C++ 中创建和返回数组有什么区别?两种方法都创建数组并用适当的值填充它,如果一切都通过,则返回 true。

bool getArray(int* array);
bool getArray(int* array[]);

谢谢

最好的问候, STeN

4

4 回答 4

3

如果它可以帮助您思考它,您可以记住这与在一个级别上int foo[]是同一回事。int *foo因此,在您的示例中,第一个传递了一个指向 int 的指针,而第二个传递了一个指向 int 的指针的指针。

于 2010-05-03T04:19:25.780 回答
1

附带说明一下,您发布的代码是 C++。没有“C/C++”之类的东西……使您的原型可识别为符合 C++ 标准的原因是函数的返回类型使用了数据类型“bool”。布尔变量未在 C 中定义。

于 2010-05-03T04:32:17.097 回答
1

bool getArray(int *array);将指向 int 的指针作为参数(实际上是要填充的 int 数组)。 bool getArray(int *array[]);接受一个 int 指针数组。第一个是您想要的,尽管调用者需要分配一个足够大的输出数组,以便getArray()可以将数组元素复制到其中。

理解 C 指针/数组声明的一种方法是将它们视为说明如何访问基类型。 int *array意味着如果你说*array,你会得到一个 int 。 int *array[]意味着如果你说*array[x],你会得到一个 int。 char (*array)[5][2][3]意味着如果你说(*array)[0 thru 4][0 thru 1][0 thru 2],你会得到一个字符。

于 2010-05-03T04:21:05.540 回答
0

第二个需要一个指向数组的指针。所以如果你是数组,int *getme;那么你调用getArray(&getme);

于 2010-05-03T04:22:03.767 回答