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

eug*_*ene 32 c c++ arrays initialization

说我想初始化myArray

char myArray[MAX] = {0};  
char myArray[MAX] = {0,};  
char myArray[MAX]; memset(myArray, 0, MAX);  
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Meh*_*dad 33

实际上,我个人建议:

char myArray[MAX] = {};
Run Code Online (Sandbox Code Playgroud)

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

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

  • 虽然`{}`在C中无效. (13认同)

Syl*_*sne 21

他们是等价的有关生成的代码(至少在优化版本),因为当一个数组初始化与{0}语法,未明确指定的所有值0被隐式初始化,编译器会知道能插入到呼叫memset.

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

  • 我认为你应该说明{0}和{}之间的区别.虽然结果是一样的,但意思不是.此外,如果没有该信息,可能会导致某人认为{1}将所有值初始化为1,这是错误的(如@Mehrdad回答中所述). (3认同)

Naw*_*waz 6

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

char myArray[MAX] = {0};  //best of all
Run Code Online (Sandbox Code Playgroud)