在堆数组上使用数组初始化符号

时间:2019-04-19 08:31:11

标签: c arrays memory

防止在堆内存中使用数组初始化符号({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;

我想念什么吗?没有简单的方法可以预先安排一个数组吗?

2 个答案:

答案 0 :(得分:1)

我将使用复合文字和memcpy进行初始化。

memcpy(list,(int[]){1, 2, 3},3*sizeof(int)); // error

或者根本没有malloc'

list = (int []){1,2,3};

答案 1 :(得分:1)

这只是语法。您发明了syntactic sugar,但它不包含在标准语言中。

他们希望C语言尽可能简单,这与其他语言在内核周围添加了很多语法的哲学相反。