使用{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
关键字放在它之前,这样编译器就能为你完成这项工作(没有运行时开销)