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

标签 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;

我错过了什么吗?有没有简单的方法来预先安排一个数组?

最佳答案

我会使用复合文字和 memcpy 来初始化。

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

或者干脆不使用 malloc'ing。

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

关于c - 在堆数组上使用数组初始化符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55758886/

相关文章:

c - 在 C 中绘制过剩对象之间的交集

无法将两个作为文件名的命令行参数传递给函数

c++ - 析构函数/释放内存的问题

c - C指针数组问题

c# windows 应用程序 - 分析峰值内存使用情况并确定趋势

java - IntelliJ 2016.3.3 (32b) JVM 错误代码-6

c - Automake Yacc 问题

c - scanf 会在巨大的字符表上中断吗?

c++ - C++ 栈中的数组

arrays - Erlang中的大型可变字节数组