代码之家  ›  专栏  ›  技术社区  ›  Dave

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

  •  1
  • Dave  · 技术社区  · 16 年前

    我有一个这些结构的定义

    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 (array, 0, sizeof(array))
    

    我看这不太对劲。

    2 回复  |  直到 13 年前
        1
  •  3
  •   rampion    16 年前

    最容易的是

    your_T array[MAX_COL][MAX_ROW] = {{{0}}};
    
        2
  •  1
  •   Johannes Schaub - litb    16 年前
    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 array[MAX_COL][MAX_ROW] = {{}};
    

    元素将被默认初始化,这意味着指针将包含空指针值。如果你的阵列是全局的,你甚至不必在意。那是默认的。

    推荐文章