初始化二维动态结构的成员

时间:2015-10-14 06:45:17

标签: c arrays struct malloc

我正在C中初始化动态二维结构,如下所示:

typedef struct
    {
        int v;
        unsigned int t;
    } cb;
    cb **b;
b = malloc( sizeof(*b) * s + (s * (e * sizeof(**b) )));

s和e是数组的维度(行和列大小)

如何在v设置为0的情况下初始化b?

2 个答案:

答案 0 :(得分:2)

永远不要使用指针到指针查找表来动态分配2D数组。这种做法很普遍但很糟糕且不正确,导致细分和程序缓慢。

相反,使用数组指针并在相邻的内存中分配一个真正的2D数组:

cb (*arr)[y] = malloc( sizeof(cb[x][y]) );

arr[i][j] = something;

free(arr);

要将所有内容初始化为零,请使用calloc而不是malloc。要将所有内容初始化为给定值,您必须使用循环并逐个分配值。

答案 1 :(得分:1)

使用calloc代替malloc