这个问题在这里已有答案:
可以从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
是使用自动存储持续时间创建的,一旦它离开其声明范围,即函数返回时,对它的引用将变为无效。
static
存储指示编译器在程序的生命周期内保留一个局部变量,而不是在每次进入和超出范围时创建和销毁它。
您还可以在函数内部使用动态分配内存。
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;
}
并且不要忘记释放分配的内存