我似乎无法理解为什么这不起作用。返回数组C++
全局变量:
int genericSet[] = {1,2,3,4};
int main()...
int* function() {
return &genericSet;
}
它为什么给我一个错误,而试图返回这个数组?是因为它是一个全局变量,如果有的话,为什么这么重要?我通常会如何返回一个静态声明的数组?我意识到这是额外的工作返回一个全局变量,但它实际上是否阻止了这一点?我只是用它作为占位符,并一直出现错误。
我似乎无法理解为什么这不起作用。返回数组C++
全局变量:
int genericSet[] = {1,2,3,4};
int main()...
int* function() {
return &genericSet;
}
它为什么给我一个错误,而试图返回这个数组?是因为它是一个全局变量,如果有的话,为什么这么重要?我通常会如何返回一个静态声明的数组?我意识到这是额外的工作返回一个全局变量,但它实际上是否阻止了这一点?我只是用它作为占位符,并一直出现错误。
您的函数类型与返回类型不匹配。你的函数是int *,但是你返回的是int **类型。
现货。需要'返回genericSet'而不是'return&genericSet'。 – tylerl 2011-05-12 02:44:40
谢谢,但有一个问题,当我尝试返回地址为&genericSet并将返回值设置为int(-asterisk在这里不会显示)[4] funciton ...应该这个工作返回的地址该数组,因为它不会让我使用int * - 另一个星号在这里不会显示任何 - 作为&genericSet的返回值: -/ – rubixibuc 2011-05-12 02:57:37
@rubixibuc将是'int(* function())[4] {return&genericSet; }' – Cubbi 2011-05-12 03:05:44
您返回一个变量的地址,该变量是一个数组。
它可以被看作是返回指针的指针。 你不需要&
,只需返回数组。
因此,要么:
int ** function()
{
return (int **)&genericSet;
}
或:
int * function()
{
return genericSet;
}
genericSet
本身就已经是一个int *
; &genericSet
是int **
,指向指向int
的指针。
-1错误类型 – 2011-05-12 05:32:24
只是返回genericSet而没有前面的&。它已经是一个指针类型,因为它具有[]
作为其类型的一部分。
C++中的指针/数组的相似性很重要,因此我建议您在阅读该语言的过程中阅读它。
我不知道为什么大家都在回答这个问题& genericSet是一个int **;它不是。澄清:
int genericSet[] = {1,2,3,4};
typedef int (*ArrayPtr)[4];
int* f1() { return genericSet; }
ArrayPtr f2() { return &genericSet; }
+1不欺骗OP。 – 2011-05-12 05:32:06
它可能有助于阅读http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c有关数组和指针之间的区别。 – Cubbi 2011-05-12 03:00:39