字符串相关探究

有关以’\0’结尾的问题

1.string类型不以’\0’结尾,例子如下:

string s="asdc";
for(int i=0;s[i]!='\0';i++)
{
	cout<<s[i];
}

此程序运行会报错(超出范围),所以我们可以隐约感觉字符串末尾并不会有’\0’。我们知道sizeof()会算上’\0’的,因此也可以通过此方法来验证这个结论。

2.字符数组并没有明确要求最后一个字符是‘\0’。

char a[]={'1','2','3','4'} //末尾我们并没有加上'\0',但此代码是可行的。并且sizeof()值为4,因此,系统也不会自动在末尾上补上'\0'。

值得我们注意的是,因为末尾不存在’\0’,所以我们无法用strlen()正确地测出其长度,只能用sizeof()检测。并且这还会带来很多潜在的危险,因此,我们习惯性地主动在末尾加上’\0’。

3.用字符串字面值来初始化字符数组,系统则会在末尾自动加上’\0’。

char a[]="hello" //等价于//char a[]={'h','e','l','l','o','\0'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值