c++函数返回错误的数组
c++ function returning incorrect array
我正在尝试创建一个名为getSortedRanks
的函数,该函数返回一个数组。我从这个问题中复制了返回数组的格式。在函数中返回数组,但没有正确返回数组。
#include <stdlib.h>
#include <stdio.h>
#define familyMembers 4
int *getSortedRanks()
{
int rankedMembers[familyMembers] = {3,4,2,1};
return rankedMembers;
}
int main()
{
int *sortedRanks = getSortedRanks();
//print the returned array
for(int i = 0; i < familyMembers; i ++)
{
cout << "ranked member is " << sortedRanks[i] << endl;
}
return 0;
}
当我运行这个时,输出是:
ranked member is 3
ranked member is 0
ranked member is 0
ranked member is 2686744
数组CCD_ 2的第一个元素总是正确的,但其他元素不是。如何更正数组的返回方式?
具有自动存储持续时间的阵列:
int rankedMembers[familyMembers] = {3, 4, 2, 1};
存在于堆栈中,并在getSortedRanks
完成后被销毁。返回的指针无效。取消引用它会导致未定义的行为。
你要么想:
动态分配数组(在堆上),因为您将管理它的生存期:
int *getSortedRanks() { return new int[familyMembers]{3, 4, 2, 1}; }
使用后不要忘记
delete []
。使用智能指针将帮助您做到这一点。使用
std::vector
或std::array
并按值返回:std::array<int, familyMembers> getSortedRanks() { return {3, 4, 2, 1}; }
(从较少到较多排序)
相关文章:
- 类动态数组错误
- 如何返回多维数组?错误C2440
- 数组错误(不允许类型不完整)
- C++ 将文件读取到数组错误:'operator>>'不匹配
- 不断增加的指针数组 错误:赋值中的类型不兼容
- 从文本文件读取 2D 数组错误
- 动态结构数组错误
- 旋转数组 - 错误
- 按字母顺序排序名称,数组错误
- 因为每个循环都读取数组错误
- 二维数组错误
- C 获取数组错误
- 编译时出现字符串数组错误
- c++2维指针类数组错误(使用openframework)
- C++数组错误
- C++上数组错误的大小
- C++数组错误:访问冲突读取位置0xC0000005
- c++2D数组错误
- C++:为“char [4]”数组错误获取太多初始值设定项
- 分段错误(核心转储)排序字符串数组错误