以下哪个代码最适合初始化数组?
char szCommand[2048] ={0}
char szCommand[2048];
memset(szCommand,0,2048);
答案 0 :(得分:5)
第二个不是初始化数组,更像是分配它。我认为,如果有任何明显的差异(不会有)你必须自己进行分析,并看到第一个版本可能会快一点 - 但这只是在优化失效时。 过早的优化是所有邪恶的根源 - 只是DON“T想一想
答案 1 :(得分:3)
两个版本之间的性能差异是如此微不足道(如果编译器没有优化差异),我倾向于选择最可读的。
答案 2 :(得分:2)
任何体面的编译器都应该为这两种情况发出相同的代码。在memset
的情况下,编译器可以通过理解标准库中函数的语义来消除函数调用。
答案 3 :(得分:2)
对于空终止字符串,在我看来,最佳初始化是这个
szCommand[0] = 0;
答案 4 :(得分:0)
两者都是一样的,第一个版本是紧凑的 - 就是这样。