2011-07-30 22 views
0

有没有办法像指针数组的数组初始化花括号一样?C - 视觉效率高的指针数组初始化使用{}

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; 

我要初始化的变量是作为函数的参数传递的变量,所以我无法有效地迭代通过他们初始化数组...

回答

2

我认为你可以用C99做到这一点。该功能被称为“复合文字”。

struct tag { 
    int x; 
    int y; 
    int z; 
}; 

struct tag *t; 
t = &(struct tag){1, 2, 3}; 

或者数组:

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

我用GCC在OS X上,我认为不包括我兼容C99的这个片段因为它不会编译。尽管谢谢你的有用答复! –

+0

@nick_name试试'-std = c99'? – cnicutar

+0

是的,没有运气... gcc -o -std = c99 prog prog.c –

0

如果这是真的约常量大小的数据,你在你的例子表明,你可能根本不应该使用malloc它。 C有数组,使用它们:)

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

是的,但使用它们只需要:

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