使用memset初始化指针元素的二维数组

时间:2008-12-29 04:57:56

标签: c++ arrays memset

我有这些结构定义

typedef struct my_s {
   int x;
   int y;
} my_T;

typedef struct your_s {
    my_T * x;
} your_T;

your_T array[MAX_COL][MAX_ROW];

要将数组的指针初始化为NULL,我可以这样做:

memset (array, 0, sizeof(array))

这对我来说不合适。

2 个答案:

答案 0 :(得分:3)

最简单的是

your_T array[MAX_COL][MAX_ROW] = {{{0}}};

答案 1 :(得分:1)

typedef struct my_s {
   int x;
   int y;
} my_T;

typedef struct your_s {
    my_T * x;
} your_T;

your_T array[MAX_COL][MAX_ROW];

您无法使用memset将your_T的指针初始化为null,因为未指定空指针的位模式全部由空位组成。但你可以这样创建你的数组:

your_T array[MAX_COL][MAX_ROW] = {{}};

元素将被默认初始化,这意味着指针指针将包含空指针值。如果您的阵列是全局的,您甚至不需要关心。那将默认发生。