字符数组初始化为空

字符数组初始化为空字符数组初始化为空1.总结起来有以下三种方式:2.分析3.结论1.总结起来有以下三种方式:(1)charstr[10]=””;(2)charstr[10]={’\0’};(3)charstr[10]=‘\0’;2.分析第(1)(2)种方式是将str数组的所有元素都初始化为’\0’,而第(3)种方式是只将str数组的第一个元素初始化为’\0’。如果数组的si…

大家好,又见面了,我是你们的朋友全栈君。

1. 总结起来有以下5种方式:

#define STR_LEN      1023

(1) char str[STR_LEN + 1]="";
(2) char str[STR_LEN + 1]={'\0'};
(3) char str[STR_LEN + 1];
	str[0] = '\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)种方式是整体清0了整个缓冲区,效率较低;
如果数组的size非常大,那么这三种方式将会造成很大的开销。

而第(3)和第(4)种方式是只将str数组的第一个元素初始化为0,效率高;

3. 结论

  1. 效率高,使用3、4初始化;
  2. 规范,建议使用5初始化(memset)
    因为有过用3/4的方式初始化,导致后面字符未初始化,而是随机值,正好使用了这些值,打印出来也是乱码导致。

4. 扩展:

4.1 不使用 szName[0] = ‘0’,使用szName[0] = 0

szName[0] = '0' ;        // Warning 4195
Possible confuse  digit '0'  or  zero-terminate '\0'  or  letter 'O'
//混淆数字0 和 字符串结尾字符 \0 ,建议直接使用 0 即可

4.2 空字符串判断

推荐用法:

if (0 != pcUserName[0])          //  推荐:安全 可靠

错误用法:

if (0 == strlen(pcUserName))
	Warning 4170 Function 'strlen' is unnecessary or duplicate

if('0' == pcUserName[0])
同上
Possible confuse  digit '0'  or  zero-terminate '\0'  or  letter 'O'
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161094.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 领导力的5个层次书籍_领导力发展的第五个层次是指

    领导力的5个层次书籍_领导力发展的第五个层次是指领导力的5个层次-个人发展—立人者方能立已一、前言第三层次领导力的重点在于个体与团队的生产力。要想获得能够领导精英的较高领导力,领导者必须实现从生产者到培养者的转变。第四层次上的优秀领导者投资时间、精力、金钱和思想,来培养其它领导者。他人观察每一个人的头衔、地位、年龄和阅历,试图度量其发展为领导者的潜力。鉴别并发…

    2025年8月7日
    3
  • 【BZOJ】2165: 大楼

    【BZOJ】2165: 大楼

    2021年5月26日
    87
  • 数据库基础:select基本查询语句

    数据库基础:select基本查询语句数据库基本查询语句规范为:select区域from表名查询指定表select*from表名*:代表所有列示例:select*fromTL_REQUEST查询指定列select列名from表名列名:代表从指定的列名中查找,:如果是查找对应的多列,则用英文逗号间隔示例:selectBU_NOfromTL_REQUEST…

    2022年6月13日
    29
  • [SSH]如何敲一条线

    [SSH]如何敲一条线[SSH]如何敲一条线

    2022年4月25日
    44
  • Vim查找命令及快捷键

    Vim查找命令及快捷键Vim查找命令及快捷键一、通过指令查找 1、左斜杠/ 从光标所在位置向文件尾搜索  例:/hello   2、问号? 从光标所在位置向文件头搜索  例:/hello   注:/和?均可加参数做指定查找(两者搜索方向不同,此处以/举例进行说明)    1) \<匹配单词的开头 \>匹配单词的结尾  例: \<hel

    2022年6月17日
    76
  • 怎么完全卸载赛门铁克_赛门铁克(sep)卸载方法

    怎么完全卸载赛门铁克_赛门铁克(sep)卸载方法卸载SEP(symantecendpointprotection),需要密码怎么办2011年12月08日下午1:50默认密码是symantec,或者Symantec1.点击“开始”->运行(或直接:Window徽标键+R)2.输入smc-stop终止SEP。如果跳出输入密码提示,则打开注册表(Window徽标键+R;输入regedit;敲回车),然后找到HKEY_LOCAL_MAC…

    2022年5月9日
    102

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号