有没有办法像指针数组的数组初始化括号方法那样做什么?
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;
我正在初始化的变量是作为函数参数传递的变量,所以我无法有效地迭代它们来初始化数组......
答案 0 :(得分: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};
答案 1 :(得分:0)
如果这与您在示例中指出的常量大小的数据有关,那么您可能根本就不应该使用malloc
。 C有数组,使用它们:)
myStruct array[4] = {a,b,c,d};
答案 2 :(得分:0)
是的,但只需要使用它们:
myStruct array[] = {a,b,c,d};