将 malloc'ed 数组分配给 stack'ed 数组

Abh*_*nav 2 c malloc pointers heap-memory stack-memory

我试图从child_prog() to返回一个数组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;
}
Run Code Online (Sandbox Code Playgroud)

现在编译器生成一个错误,说它不能分配给C(这是一种int[]类型)从child_prog(这是一种int*类型)返回的值。事实上,当我创建C一个int*malloc它 10ints个内存时,程序运行良好。但我不明白为什么编译器不能分配给C(定义为C[10]指针child_prog的数组)从(定义为static int out[10]指针的数组)返回的值。

MBy*_*ByD 5

  1. 您不能分配给数组。你需要memcpy它。
  2. int*!= int[],而第一是一个指针,可能指向一个int序列的intS,第二是一个序列int小号
  3. 您可以使用int *C;并传递数组的长度(如果在编译时未知)作为输出参数。
  4. static int out[10];不是malloced,而是静态的。