以下函数声明之间的区别是什么,它在C / C ++中创建并返回数组?两种方法都创建数组并用适当的值填充它,如果一切都通过则返回true。
bool getArray(int* array);
bool getArray(int* array[]);
由于
最诚挚的问候, 斯登
答案 0 :(得分:3)
如果它可以帮助您思考它,您可以记住,int foo[]
与int *foo
在同一级别上是相同的。因此,在您的示例中,第一个传递指向int的指针,而第二个传递指向指向int的指针。
答案 1 :(得分: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]
,你就会得到一个字符。
答案 2 :(得分:1)
另外,您发布的代码是C ++。没有“C / C ++”这样的东西......是什么让你的原型可以被识别为C ++ - 一致的是使用数据类型“bool”来表示函数的返回类型。布尔变量未在C中定义。
答案 3 :(得分:0)
第二个需要一个指向数组的指针。因此,如果您的数组是int *getme;
,那么您可以调用getArray(&getme);