返回数组C++
Returning Arrays C++
我似乎不明白为什么这行不通。
全局变量:
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
的指针。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '