struct x {
char a[10];
char b[20];
int i;
char *c;
char *d[10];
};
Run Code Online (Sandbox Code Playgroud)
我正在填充此结构,然后使用值.在下一次迭代中,我想在重新开始重用之前0或null之前重置所有字段.
我怎样才能做到这一点?我可以使用memset或者必须通过所有成员然后单独进行吗?
在Win32 API编程中,通常使用struct具有多个字段的C s.通常只有其中几个具有有意义的值,而其他所有值都必须归零.这可以通过以下两种方式之一实现:
STRUCT theStruct;
memset( &theStruct, 0, sizeof( STRUCT ) );
Run Code Online (Sandbox Code Playgroud)
要么
STRUCT theStruct = {};
Run Code Online (Sandbox Code Playgroud)
第二个变体看起来更干净 - 它是一个单行,它没有任何可能输错的参数并导致错误被种植.
与第一个变体相比,它有任何缺点吗?使用哪种变体?为什么?
当我尝试使用g ++编译以下内容时:
const int zero;
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误uninitialized const 'zero'.我认为全局变量默认初始化为0 [1]?为什么不是这种情况?
VS编译这个罚款.
[1]例如,请参阅/sf/answers/764910541/