我试图从 child_prog()
返回一个数组至 main()
.代码如下所示:
#include<stdio.h>
#include<stdlib.h>
int* child_prog(int some_input);
void main(void){
int C[10];
int some_input;
C = child_prog(some_input);
}
int* child_prog(int some_input){
static int out[10];
// ...
// ... some wizardry
return out;
}
现在编译器生成一个错误,说它不能分配给 C
(这是一个 int[]
类型)从 child_prog
返回的值(这是一个 int*
类型)。事实上,当我制作 C
时程序运行良好一个int*
和 malloc
它 10 ints
的内存。但我不明白为什么编译器不能分配给 C
(定义为 C[10]
的数组,因此是一个指针)从 child_prog
返回的值(定义为 static int out[10]
的数组,因此也是一个指针)。
最佳答案
- 您不能分配给数组。你需要
memcpy
它。 int*
!=int[]
而第一个是一个指针可能指向一个int
int
的序列,第二个 是int
的序列- 您可以使用
int *C;
并将数组的长度(如果在编译时未知)作为输出参数传递。 static int out[10];
不是malloc
ed,而是静态的。
关于c - 将 malloc 数组分配给堆栈数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10662781/