防止在堆内存中使用数组初始化符号({1,2,3...}
)的背后逻辑目的是什么?看来现在应该已经添加到标准中的功能...
这是否可行?
int *list;
list = malloc(sizeof(*list)*3);
*list = {1, 2, 3}; // error
但是必须这样做:
int *list;
list = malloc(sizeof(*list)*3);
list[0] = 1;
list[1] = 2;
list[2] = 3;
我想念什么吗?没有简单的方法可以预先安排一个数组吗?
答案 0 :(得分:1)
我将使用复合文字和memcpy
进行初始化。
memcpy(list,(int[]){1, 2, 3},3*sizeof(int)); // error
或者根本没有malloc'
。
list = (int []){1,2,3};
答案 1 :(得分:1)
这只是语法。您发明了syntactic sugar,但它不包含在标准语言中。
他们希望C语言尽可能简单,这与其他语言在内核周围添加了很多语法的哲学相反。