返回一个 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;
}
我创建了以下程序,它应该 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;
}