是
struct datainfo info = { 0 };
Run Code Online (Sandbox Code Playgroud)
与...相同
struct datainfo info;
memset(&info, 0, sizeof(info));
Run Code Online (Sandbox Code Playgroud)
有什么区别,哪个更好?
第一种是最好的方法,因为它可以保证struct成员被初始化,因为它们将用于static存储。也更清楚。
从标准的角度来看,虽然特定的编译器可能会最终优化第一种方法到第二种方法,但即使它最终破坏了作为padding丢弃的部分内存,也无法保证这两种方法是等效的。
(请注意,在C ++中,第二种方式的行为很可能不确定。是的,C不是C ++,但是相当一部分C代码确实倾向于最终移植到C ++。)