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

说我想初始化myArray

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

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

谢谢

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

唯一的区别是风格。 选择取决于您使用的编码标准或您的个人喜好。

实际上,我个人建议:

 char myArray[MAX] = {}; 

他们都做同样的事情,但我更喜欢这个; 这是最简洁的。 = d

请注意char myArray[MAX] = {1}; 不会将所有值初始化为1! 它只将第一个值初始化为1,其余值为零。 因此,我建议你不要写char myArray[MAX] = {0}; 因为它对某些人来说有点误导,即使它正常工作。

我认为第一种解决方案是最好的。

 char myArray[MAX] = {0}; //best of all 

两者都可以使用

但我觉得下面更容易理解和可读..

  char myArray[MAX]; memset(myArray, 0, MAX); 

假设你总是想用0初始化。

– >你的第一种方式和第二种方式是一样的。 我更喜欢第一。

– >如果要分配除初始化以外的0,则应使用第三种memset()方法。

– >如果期望这个数组只初始化一次,那么你可以将static关键字放在它之前,这样编译器就能为你完成这项工作(没有运行时开销)

你也可以使用bzero fn(写零值字节)

 #include  void bzero(void *s, size_t n) 

http://linux.die.net/man/3/bzero