将字符数组初始化为空1 .总结如下:2.分析3 .结论4 .扩展:不使用4.1szname[0]='0',而使用szName[0]=04.2空字符串进行判断
1 .总结如下: #definestr_len1023(1) char str[STR_LEN 1]=' '; )2) char str[STR_LEN 1]={' '}; )3) char str[STR_LEN 1]; str[0]=' '; )4) char str[STR_LEN 1]; str[0]=0; )5) char str[STR_LEN 1]; memset(str,0,sizeof ) str ); 2 .分析
(1) (2) )5)的方式是将缓冲器整体全部清除,效率不高。
如果数组的size非常大,这三种方法会产生很大的开销。
另一方面,(3)和(4)的方式,通过只将str排列的最初要素初始化为0来提高效率;
3 .结论效率高,用3、4初始化; 规格,建议5初始化(memset )
因为用3/4进行了初始化,所以后面的字符可能没有被初始化,而是随机的值。 正好使用这些值,印刷也是乱码的原因。 4 .扩展: 4.1不使用szname [0]=‘0’,而使用szname [0]=0szname [0]=‘0’; //warning 4195如果要混淆possibleconfusedigit '0' or zero-termin ate ' ' or letter ' o '//数字0和字符串结尾字符 ,请直接使用0输入4.2空字符串
if(0!=pcUserName[0]推荐:安全可靠的错误用法:
if(0==strlen(PCusername ) ) warning 4170 function ' strlen ' isunnecessaryorduplicateif (0)==PCusername )0) )