试图将本地创建的数组的地址返回到C中的主函数



我是C的新手,所以请耐心等待。我创建了一个函数初始化,希望返回在初始化中创建和修改的数组。现在我知道我不能用C返回数组,但我可以做的是通过在return语句中指定数组名称来返回一个指向数组的指针。出于某种原因,当我这样做时,我会收到这个警告。现在我知道初始化内部arr的寿命只会延长到初始化结束,然后内存会被释放,但我不确定如何解决这个问题。如果有人能解释一下发生了什么,我们将不胜感激。

从具有不兼容返回类型"int*"的函数返回"int(*([(sizetype((n(]">

警告:函数返回本地变量[-Wreturn local-addr]的地址

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int *initialization(int n);
int main()
{
int dim = 2;
*p = initialization(dim);
return 0;
}
int *initialization(int n)
{
int arr[n][n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
arr[i][j] = 1;
}
}
return arr;
}

当函数返回时,局部自动变量停止存在。

您可以返回对本地对象的引用,但不能取消对它的引用,因为它引用的内存位置在函数返回后变得无效。

最新更新