Initialize/reset struct to zero/null

前端 未结 9 1816
攒了一身酷
攒了一身酷 2020-11-27 10:28
struct x {
    char a[10];
    char b[20];
    int i;
    char *c;
    char *d[10];
};

I am filling this struct and then using the values. On the n

9条回答
  •  余生分开走
    2020-11-27 11:11

    In C, it is a common idiom to zero out the memory for a struct using memset:

    struct x myStruct;
    memset(&myStruct, 0, sizeof(myStruct));
    

    Technically speaking, I don't believe that this is portable because it assumes that the NULL pointer on a machine is represented by the integer value 0, but it's used widely because on most machines this is the case.

    If you move from C to C++, be careful not to use this technique on every object. C++ only makes this legal on objects with no member functions and no inheritance.

提交回复
热议问题