我试图从file1.c中的child_prog()
到main()
返回一个数组。我试着给出下面的伪代码。malloc'ed数组到stack'ed数组的分配
#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]
,因此也是一个指针)返回的值。
好的,理解点数为1即int *!= int []。但是,如果我将C定义为int * C而不是int C [],并且malloc是已知的内存量,并且child_prog返回C指向静态int数组的指针,我应该不能绕过需要做memcpy? – Abhinav
如果你不是分配给一个数组,而是分配给一个指针,你不需要'memcpy'。 – MByD
感谢您杀死我的很多龙......相当快 – Abhinav