避免多类型结构的memset

alp*_*ra7 -1 c memset memcpy

我想避免memset()在这样的结构上使用:

typedef struct {
    int size;
    float param1;
} StructA;

typedef struct {
    StructA a;
    unsigned int state;
    float param2;
} Object;
Run Code Online (Sandbox Code Playgroud)

我可以做这样的事情(伪代码,我现在无法检查)?

Object obj;
int *adr = (int*)&obj;
for (int i; i < sizeof(obj); i++) {
    *adr++ = 0;
}
Run Code Online (Sandbox Code Playgroud)

它会将obj的每个成员设置为零吗?

编辑:回答评论问题.我一直在研究一些情况(使用uni-type结构),其memset速度比手动初始化慢两倍.所以我会考虑尝试初始化多类型结构.

避免memcpy()也会很好(避免使用<string.h>lib).

pmg*_*pmg 5

通用零初始化初始化一切(递归),以适当类型的零.

Object object = {0};
Run Code Online (Sandbox Code Playgroud)