C - 使用{}进行视觉上高效的指针数组初始化

时间:2011-07-30 08:45:13

标签: 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] = blahn;

我正在初始化的变量是作为函数参数传递的变量,所以我无法有效地迭代它们来初始化数组......

3 个答案:

答案 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};