C-使用{}进行直观高效的指针数组初始化

C-使用{}进行直观高效的指针数组初始化,c,pointers,C,Pointers,是否有一种方法可以像指针数组的数组初始化括号方法那样执行操作 myStruct* array = malloc(4*sizeof(myStruct)); array = {a,b,c,d}; //like this 我之所以感兴趣,是因为前面提到的几行比下面的几行好看得多: myStruct* array = malloc(4*sizeof(myStruct)); array[0] = blah0; array[1] = blah1; array[2] = blah2; ... array[n

是否有一种方法可以像指针数组的数组初始化括号方法那样执行操作

myStruct* array = malloc(4*sizeof(myStruct));
array = {a,b,c,d}; //like this
我之所以感兴趣,是因为前面提到的几行比下面的几行好看得多:

myStruct* array = malloc(4*sizeof(myStruct));
array[0] = blah0;
array[1] = blah1;
array[2] = blah2;
...
array[n] = blahn;

我要初始化的变量是作为函数参数传递的变量,因此我无法有效地迭代它们来初始化数组…

我认为您可以使用C99来完成。该特性称为“复合文字”

或者,对于阵列:

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

如果这真的是如您在示例中所指出的大小恒定的数据,那么您可能不应该使用
malloc
。C有数组,请使用它们:)


可以,但仅在需要时使用:

myStruct array[] = {a,b,c,d};

我在OSX上使用GCC。我认为C99的这个片段不适合我,因为它不会编译。谢谢你有用的回复!是的,没有运气。。。gcc-o-std=c99 prog-prog.cOops,我的回复中有打字错误。是的,我做了后者。我只是在Xcode 4.1中试过。它使用LLVM GCC 4.2、GCC 4.2和Apple LLVM编译器2.1进行编译<代码>int*arr;arr=(int[]){1,2,3}
myStruct array[4] = {a,b,c,d};
myStruct array[] = {a,b,c,d};