【发布时间】:2021-05-16 15:08:56
【问题描述】:
我试图解决this code。我们必须返回一个数组作为函数的输出。我必须编码的函数是这样给出的。
int *findTwoElement(int *arr, int n) {
// code here
}
当我声明我的ans 数组时,如下表所示并返回它,我得到一个segmentation fault
int ans[2];
ans[0]=b;
ans[1]=a;
return ans;
但是当我声明我的 ans 数组时,如下表所示并返回它,它工作正常
int *ans=new int(2);
ans[0]=b;
ans[1]=a;
return ans;
EDIT--> 那么如果第一个代码返回segmentation fault,那么这段代码(如下所示)如何正常工作?
#include <iostream>
using namespace std;
int* fun()
{
int arr[100];
/* Some operations on arr[] */
arr[0] = 10;
arr[1] = 20;
return arr;
}
int main()
{
int* ptr = fun();
cout << ptr[0] << " " << ptr[1];
return 0;
}
我没有明白我做错了什么。任何帮助将不胜感激。谢谢你。 :)
【问题讨论】:
-
您不能从函数返回 C 数组。
-
int ans[2];将ans定义为 local 变量。当函数返回时,它的生命周期将结束,留下一个无效的指针。 -
第二个代码也不正确,因为您只为一个
int分配空间。你会想要new int[2];。 -
嘿,我已经编辑了
-
欢迎来到 undefined behavior 的美妙世界,有时事情可能似乎正常工作(但实际上并非如此),只是在你最不期望的时候崩溃。
标签: c++ arrays return-value