返回数组C++

Returning Arrays C++

本文关键字:C++ 数组 返回      更新时间:2023-10-16

我似乎不明白为什么这行不通。

全局变量:

int genericSet[] = {1,2,3,4};
int main()...
int* function() {
    return &genericSet;
}

为什么在尝试返回此数组时会给我一个错误? 是因为它是一个全局变量,如果是这样,为什么这很重要? 我通常如何返回静态声明的数组?我意识到这是返回全局变量的额外工作,但它实际上会阻止这种情况吗?我只是将其用作占位符并不断收到错误。

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

我不知道

为什么每个人都回答&genericSet是一个int**;它不是。 澄清一下:

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

返回变量的地址,这是一个数组。

它可以被视为返回指向指针的指针。你不需要&,只需返回数组即可。

因此,请执行以下任一操作:

int ** function()
{
    return ( int ** )&genericSet;
}

或:

int * function()
{
    return genericSet;
}

只需返回 genericSet 而不带前面的 &。它已经是一个指针类型,因为它具有[]作为其类型的一部分。

理解C++中的指针/数组相似性很重要,因此我建议您将其作为语言之旅的一部分。

genericSet本身已经是一个int *; &genericSet是一个int **,一个指向int的指针。