我创建了以下程序,该程序应该将一个int数组返回给main函数,然后将其显示在屏幕上。
#include <iostream.h>
int* returnArray(){
int* arr;
arr[0]=1;
arr[1]=2;
arr[2]=3;
return arr;
}
int main(){
int* res = returnArray();
for(int i=0; i<3; i++){
cout<<res[i]<<" ";
}
return 0;
}
我期待它打印
1 2 3
但相反,它打印3 someNumberWhichLooksLikeAPointer 0
为什么?我该怎么做才能从我的函数中返回一个int数组?非常感谢你!
答案 0 :(得分:1)
您忘了分配阵列:
int* arr = new int[3];
您还需要返回它,并在完成循环后释放main
内的内存以避免内存泄漏:
delete[] res;
虽然这种方法有效,但并不理想。如果您可以选择退回容器,比如std::vector<int>
,那将是一个更好的选择。
如果你必须使用普通数组,那么在API中填充数组的另一个解决方案就是将其传递给它:
void fillArray(int *arr, size_t s){
if (s > 0) arr[0]=1;
if (s > 1) arr[1]=2;
if (s > 2) arr[2]=3;
}
int main(){
int res[3];
fillArray(res, 3);
for(int i=0; i<3; i++){
cout<<res[i]<<" ";
}
return 0;
}
答案 1 :(得分:1)
您已使用C++
标记了问题。 You Yous应该考虑使用C ++解决方案:使用int
#include <iostream>
#include <vector>
std::vector<int> returnArray(){
std::vector<int> arr(3);
arr[0]=1;
arr[1]=2;
arr[2]=3;
return arr;
}
int main(){
std::vector<int> res = returnArray();
for(int i=0; i<3; i++){
std::cout<<res[i]<<" ";
}
return 0;
}