请考虑下面的结构定义.
struct xyz {
char a;
void *ptr;
uint16_t num1;
uint32_t num2;
uint64_t num3;
};
Run Code Online (Sandbox Code Playgroud)
我可以通过以下三种方式之一将此结构的实例初始化为零.
在申报时
struct xyz instance = { 0 };
Run Code Online (Sandbox Code Playgroud)在使用C-99功能声明它之后的某个时间.
instance = (const struct xyz) { 0 };
Run Code Online (Sandbox Code Playgroud)3.memset (&instance, 0, sizeof (struct xyz));
典型的C结构可以由编译器添加一些填充以用于对齐目的.因此memset会将填充字节初始化为零.
我的问题是:
通常,上面的方法1或2的初始化会比方法3更快吗?保存多少CPU周期并不重要,我只是好奇1和2是否快于3.