C语言的字符串细节

C语言的字符串细节

char str1[5] = { "abcd" };
//sizeof(str2) = 5
//strlen(str2) = 4
//当我们定义了一个大小为5的字符串数组,最多只能放4个字符,即换成"abcde"会报错
//是因为至少要留一个'\0'(ASCII码 = 0)即str1[4] = '\0'作为结尾结束标志,如果初始化"abc"则会未初始化的都是str1[3-4] = '\0'
char str2[5] = { 'a','b','c','d','e'};//强行覆盖了结束标志
//sizeof(str2) = 5
//strlen(str2) = 脏数据。因为识别到'\0'才会停下来
char str3[] = { "abcde" };//总会在最后补'\0'
//sizeof(str2) = 6
//strlen(str2) = 5
char str4[] = { 'a','b','c','d','e'};
//sizeof(str2) = 5
//strlen(str2) = 脏数据。因为没有明确定义'\0'
char str5[] = {"张三"};
//sizeof(str2) = 5 因为一个汉字在中文GBK国标库占两个字符然后自动补'\0	'
//strlen(str2) = 4
char str6[] = {"abc\ndef"};
cout << str6 << endl;
//输出:
abc
def
//sizeof(str6) = 8 '\n'仅代表一个字符,末尾补'\0'
//strlen(str6) = 7
char str7[] = { 'a','\n','b'};
cout << str7 << endl;
//输出: 也就是说cout输出流也是看到'\0'结束输出的
a
b烫烫烫乱码
//sizeof(str7) = 3 明确指定字符就是明确大小
//strlen(str7) = 脏数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值