使用 {0}、{0、} 进行数组初始化?

2022-01-19 00:00:00 arrays initialization c c++

假设我要初始化 myArray

Say I want to initialize myArray

char myArray[MAX] = {0};  
char myArray[MAX] = {0,};  
char myArray[MAX]; memset(myArray, 0, MAX);  

它们是否都相同或优于另一个?

Are they all equal or any preferred over another?

谢谢

推荐答案

它们在生成的代码方面是等效的(至少在优化的构建中),因为当使用 {0} 语法初始化数组时,所有未显式指定的值都隐式初始化为 0,编译器将知道足以插入对 memset 的调用.

They are equivalent regarding the generated code (at least in optimised builds) because when an array is initialised with {0} syntax, all values that are not explicitly specified are implicitly initialised with 0, and the compiler will know enough to insert a call to memset.

因此,唯一的区别在于风格.选择将取决于您使用的编码标准或您的个人喜好.

The only difference is thus stylistic. The choice will depend on the coding standard you use, or your personal preferences.

相关文章