【C++】字符与字符数组

字符是什么

共分为4种

字母:a b c ... z

数字:0 1 2 3 ... 9

标点:+ - * / . ; ,等等

控制字符:Tab, Enter等等

用ascii码来表示以上字符,例如65 <=> 'A',97 <=> 'a',48 <=> '0',49 <=> '1',43 <=> '+',32 <=> ' '(这里是空格),9 <=> '\t'等等。

#include "stdio.h"

int main()
{
    printf("%c %c \n", 'A', 65);
    printf("%c %c %c", '1', ' ', '2');

    return 0;
}

/*
//run out:
A A
1   2

*/

字符数组

字符数组最后是有一个结束符0或者'\0',所以char str[6]的数组长度为6,但只能存储5个字符。

#include "stdio.h"

int main()
{
    //初始化第一种方式
    char str[6] = {'b', 'e', '1', '2', 'o', '\0'};
    //第二种方式
    char str1[5] = "hell";
    //第三种方式
    char str2[] = "aa";

    //char str3[6] = {'b', 'e', '1', '2', 'o', 'B'};不会报错,但是由于没有结束符,printf会一直读取内存,然后直到遇到结束符0为止。这时这段代码就不可预测,所以不能这样使用。

    printf("%c \n", str[4]);
    printf("%s \n", str1);
    printf("%s", str2);

    return 0;
}

/*
//run out;
o
hell
aa
*/

注意事项:

1)数组足够大,有效字符串最大长度=数组长度-1;

2)不以0结束的字符串,不是正常的字符串;

3)0之后的字符不会被打印出来。

不妨看个例子巩固下:

#include "stdio.h"

int main()
{
    char str[6] = {'b', 'e', 0, '2', 'o', '\0'};
    char str1[5] = "hell";
    printf("%c \n", str[4]);
    printf("%s \n", str1);
    printf("%s", str);

    return 0;
}

/*
//run out:
o
hell
be
*/

从结果可以看出,打印单个字符str[4]时,结果依旧为o,这表明str所有都被初始化了。而使用prinft在打印整个str时,只打印了be,这是因为printf遇0就停了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值