返回一个 int 数组

returning an int array

我创建了以下程序,它应该 return 一个 int 数组到主函数,然后将其显示在屏幕上。

#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

这是为什么?我可以从我的函数中对 return 一个 int 数组做些什么?非常感谢!

您忘记分配您的数组:

int* arr = new int[3];

您还需要 return 它,并在完成循环后释放 main 中的内存以避免内存泄漏:

delete[] res;

虽然这种方法有效,但并不理想。如果您可以选择 returning 一个容器,比如说,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;
}

您已用 C++ 标记了问题。你你应该考虑使用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;
}