加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言数组加入“\0”的问题

(2019-02-20 15:47:27)
标签:

it

杂谈

分类: C/C 基础

转自:https://blog.csdn.net/wasabikun/article/details/80056659

对于字符数组后面是否要加‘\0’,有以下几种情况:

第一种: char str[10] = {'h','e','l','l','o'};

如果大括号中的字符个数小于字符数组的长度,则把大括号中的字符赋给数组中前面的元素,其余元素自动赋值为空字符(即‘\0’)。

第二种:char str[5] = {'h','e','l','l','o'};

对于大括号中的字符个数和数组长度相同,系统不会自动添加'\0'。对于这种赋值方式,需要手动添加‘\0’;

即:char str[6] = {'h','e','l','l','o', '\0'};

第三种:char str[] = "hello";

系统会自动在后面添加‘\0’;

对于字符串,系统会自动在其后面加‘\0’,因此 const char str[5] = "hello",在VS环境下会提示错误:const char[6] 不能赋值给 const char[5],但是在GCC不报错;建议最好不要这样写,以及对字符串定义时采用第三种方式,或者使用 char *str = "hello";

https://img-blog.csdn.net/20180424152632774

 

分析:strlen 是以‘\0’为结束依据,因此会出现19 和21;使用sizeof()会将‘\0’也当做一个字符并计入结果,而strlen()不会计入‘\0’。

其中在C语言中,字符串是用字符数组来存储的。

注意:在实际编程中,在定义字符数组时应估计实际字符串的长度,保证数组长度始终大于字符串的长度。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有