gpt4 book ai didi

c - 从 C 中的函数返回整数数组而不使用 static

转载 作者:行者123 更新时间:2023-11-30 20:58:38 24 4
gpt4 key购买 nike

可以在不使用 static 的情况下从 C 中的函数返回数组吗?

int *func(int n)
{
int d[100];
int i=0,a;
while(n!=0)
{
a=n%2;
d[i]=a;
n=n/2;
i++;
}
return d;
}

最佳答案

退出函数后,您无法返回在堆栈上本地创建的数组,该数组不再有效。你需要使用静态数组[100]或指针和malloc内存

int *func(int n)
{
static int d[100];
int i=0,a;
while(n!=0)
{
a=n%2;
d[i]=a;
n=n/2;
i++;
}
return d;
}

UPDT:

d 是使用自动存储持续时间创建的,一旦它离开其声明范围(即函数返回时),对其的引用将变得无效。

静态存储指示编译器在程序的生命周期内保持局部变量的存在,而不是在每次进入和离开作用域时创建和销毁它。

您还可以在函数内使用动态分配内存。

int *func(int n)
{
int *d = malloc(sizeof(int) * (100));
int i=0,a;
while(n!=0)
{
a=n%2;
d[i]=a;
n=n/2;
i++;
}
return d;
}

并且不要忘记释放分配的内存

关于c - 从 C 中的函数返回整数数组而不使用 static,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com