返回数组C++

rub*_*buc 1 c++ arrays

我似乎无法理解为什么这不起作用.

全局变量:

int genericSet[] = {1,2,3,4};

int main()...

int* function() {
    return &genericSet;
}
Run Code Online (Sandbox Code Playgroud)

为什么在尝试返回此数组时会给我一个错误?是因为它是一个全局变量,如果是这样,为什么会这么重要?我通常如何返回静态声明的数组?我意识到这是额外的工作返回一个全局变量,但它实际上是否阻止了这一点?我只是用它作为占位符并且一直出错.

ars*_*enm 6

您的函数类型与返回类型不匹配.你的函数是int*,但你返回的是int**类型.

  • @rubixibuc将是`int(*function())[4] {return&genericSet; }` (2认同)

ser*_*rvn 5

我不知道为什么每个人都在回答这个问题并且genericSet是一个int**; 事实并非如此.澄清:

int genericSet[] = {1,2,3,4};
typedef int (*ArrayPtr)[4];
int* f1() { return genericSet; }
ArrayPtr f2() { return &genericSet; }
Run Code Online (Sandbox Code Playgroud)