学习C++之char型数组时的小tips

本文详细介绍了C++中char型数组在初始化字符串常量时的两种情况,包括未声明元素个数和已声明元素个数,并强调了数组界限和空字符的重要性。此外,还讲解了strlen()与sizeof()的区别以及cin流对象对char型数组输入时的注意事项。最后,提到了单引号和双引号在赋值时的区别。
摘要由CSDN通过智能技术生成

1.char型数组的字符串在初始化为字符串常量或者后续赋值时

(1) 没有声明数组的元素个数

如 char str[ ] = “CSDN”;

此时编译器会自动在字符‘N’后添加一个空字符’\0’以表示结尾

因此数组的长度是5个字节

(2) 声明时确定了元素个数

char str2[8] = “CSDN” ;

此时只对前4个char型元素进行了赋值,第五个元素由空值字符 ’\0 自动加到结尾,同时其余3个元素设置为\0,如下表:

C

S

D

N

\0

\0

\0

\0

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

同时应注意:当明确了char型数组的元素个数时,初始化数组或后续对数组进行赋值时,别忘了将结尾的空字符需要占一个元素计算在内,不然会发生数组界限溢出。

如:char str3[8] = “CSDNPRO” ; //  valid

     char str4[8] = “CSDNPLUS”; // invalid  error:“str4”: 数组界限溢出

2.区分对char型数组使用函数strlen() 和sizeof()的返回值 (注意sizeof不是函数)

由于数组在结尾会自动添加一个 ‘\0’ 字符以表示结尾,且char型元素占8位(1个字节),该数组的长度(大小)即为5个字节,所以使用sizeof(str)时返回的是5。

而使用strlen(str)函数时返回的值该字符串的实际字符长度,结尾自动添加的空字符不计算在内,因此长度为4个字符(不是字节)。

3.使用cin流对象 对char型数组进行键盘输入时

(1)输入一个字符串:

        char str[20];

        cin >> str; // str = "abcdefg"   

        cout << str;    // show: abcdefg

(2)输入一行字符串时:

        char str2[20];

        cin >> str2; // str2 = "abcd efg"

        cout << str2; //show:abcd

原因:char型数组的字符串以 '\0' 表示结尾,因此cin使用空白(空格)来确定字符串的结束位置,在对str2进行赋值时,在cin中abcd后的空格符导致之后的efg没有输入到数组str2中。

解决方法:通过cin对象调用类当中类成员函数getline(用来存储该输入行的数组名称,读取的字符数)或者get(参数同理)

4.区分单引号和双引号的使用

        char s1 = 'C'; // valid

        char s2 = "C"; // invalid

        单引号表示的是一个字符常量,是字符串编码的简写。在ASCII系统上,'C'只是67的另一种写法,因此第一条语句将67赋值给s1。

        双引号表示的是一个字符串常量,表示的是 两个字符 'C' 和 '\0' 组成的一个字符串,因此将其赋值给char类型的s2是不合法的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值