字符数组及字符串 是否添加'\0'

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">	</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">参照:http://blog.sina.com.cn/s/blog_a2e509c101014wjw.html;并做了简单的归纳。</span>

对于字符数组后面是否要加‘\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";


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

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

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

  • 32
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值