说我想初始化myArray
char myArray[MAX] = {0};
char myArray[MAX] = {0,};
char myArray[MAX]; memset(myArray, 0, MAX);
它们是否相同或优先于另一种?
谢谢
答案 0 :(得分:32)
实际上,我个人建议:
char myArray[MAX] = {};
他们都做同样的事情,但我更喜欢这个;这是最简洁的。 = d
顺便说一句,请注意 char myArray[MAX] = {1};
不将所有值初始化为1!它只将第一个值初始化为1,其余值为零。因此,我建议你不要写char myArray[MAX] = {0};
,因为它对某些人来说有点误导,即使它能正常工作。
答案 1 :(得分:20)
它们与生成的代码(至少在优化的构建中)是等价的,因为当使用{0}
语法初始化数组时,所有未显式指定的值都会隐式初始化为0,编译器将足够了解插入对memset
的调用。
唯一的区别是风格。选择取决于您使用的编码标准或您的个人偏好。
答案 2 :(得分:4)
我认为第一种解决方案是最好的。
char myArray[MAX] = {0}; //best of all
答案 3 :(得分:1)
可以使用
但我觉得下面的内容更容易理解和可读......
char myArray[MAX];
memset(myArray, 0, MAX);
答案 4 :(得分:1)
假设你总是想用0初始化。
- >你的第一种方式和第二种方式是一样的。我更喜欢第一名。
- >当你想要分配0而不是初始化时,应该使用memset()
的第三种方式。
- >如果预期此数组只初始化一次,那么您可以将static
关键字置于其前面,以便编译器为您完成工作(无运行时开销)
答案 5 :(得分:0)
您也可以使用bzero fn(写零值字节)
#include <strings.h>
void bzero(void *s, size_t n)