字符数组初始化为空

字符数组初始化为空字符数组初始化为空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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • httprunner(8)用例调用-RunTestCase[通俗易懂]

    httprunner(8)用例调用-RunTestCase[通俗易懂]前言一般我们写接口自动化的时候,遇到复杂的逻辑,都会调用API方法来满足前置条件,Pytest的特性是无法用例之间相互调动的,我们一般只调用自己封装的API方法。而httprunner支持用例之间

    2022年7月28日
    11
  • docker 镜像构建_docker生成镜像

    docker 镜像构建_docker生成镜像前言如果我们已经安装了一个python3的环境,如果另一台机器也需要安装同样的环境又要敲一遍,很麻烦,这里可以配置Dockerfile文件,让其自动安装,类似shell脚本Dockerfile编写

    2022年7月29日
    3
  • UNIX的常用命令

    UNIX的常用命令Unix常用命令介绍:  多命令行:“;”多行命令:“\”1、系统关闭reboot、halt/shutdown、poweroff2、passwd命令:修改系统用户密码passwd[username]3、su命令:切换系统用户su[-username]username为空表示root用户4、cat命令:将指定的文件在标准输出到显示器cat [-AbET] [文件名列表]-A      …

    2022年5月31日
    31
  • PotPlayer的官网「建议收藏」

    PotPlayer的官网「建议收藏」访问PotPlayer的官网,需要先能访问到外面的网络。http://potplayer.tv/http://potplayer.daum.net/如果无法访问外面的网络,可以使用下面的阿里云盘链接阿里云盘分享

    2022年7月27日
    22
  • dedecms下的tplcache模板缓存文件过多怎么清理?

    dedecms下的tplcache模板缓存文件过多怎么清理?

    2021年9月19日
    41
  • STM32项目设计:基于stm32f4的智能门锁(附项目视频全套教程、源码资料)[通俗易懂]

    STM32项目设计:基于stm32f4的智能门锁(附项目视频全套教程、源码资料)[通俗易懂]文章目录智能门锁一、项目背景二、项目功能要求三、元件准备四、项目设计(一)原理图设计(二)硬件设计(三)程序设计智能门锁资料链接:stm32智能门锁.rar哔哩哔哩项目展示视频:https://b23.tv/bxfxvd一、项目背景在消费升级渗透在各个领域的今天,国民消费发生着巨大的变化,与每个人息息相关的家居行业也是如此。现今,越来越多的智能家居产品出现在普通老百姓的生活中,智能照明、智能窗帘、智能扫地机器人等各种智能产品都给人们的生活带来了极大的便利。智能门锁作为智能家居中重要的一环,也成

    2022年6月9日
    81

发表回复

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

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