字符与字符数组

字符与字符数组


1字符的概念和使用

字符是什么
观察键盘上的键,分为4种:
字母:a b c … z
数字:0 1 2 … 9
标点:+ - * / ; , . 等等
控制字符: Tab, Enter 等等

字符的存储
3.3讲:
计算机只能存储0和1
0000 0000 ~ 1111 1111
于是想到一个办法:用数字来代表字符
例如,65  ‘A’
当内存中存储 0100 0001(十进制65)时,它代表 了字符‘A’

字符的打印
• 想把一个字符显示如来,
• printf(“%c”,65);

ASCII码表
把键盘上所有的字符用一个数字来表示,制定了一个表,称为ASCII码表。

字符ASCII码
‘A’65
‘a’97
‘0’48
‘+’43
‘ ‘32
‘\t’9

ASCII码数值范围比较小,所以用char型足够可以表示, char ch = 65;

字符常量
• ASCII码表无需记忆
char ch = ‘A’;
char ch = 65;
char ch = 0x41;
效果一样
• 用字符常量来表示ASCII码,加单引号
‘A’ ‘a’ ‘0’ ‘1’ ‘+’ ‘\t’

字符常量
• 例如,
• printf(“%c %c \n”, ‘A’,65);
• char ch = ‘B’;
• printf(“%d \n”, ch);
• // 打印空格
• printf(“%c%c%c”,‘1’,‘ ’,‘2’);
• // 打印加号
• printf(“%c%c%c”,‘1’,‘+’,‘2’);

转义字符
• 引例:如何换行打印呢?
• 想输出3行
1
2
3
printf(“%c%c%c”,‘1’,‘2’,‘3’); ???

转义字符 • 存在一些特殊字符: • ‘\n’表示换行 • ‘\t’表示Tab • ‘\”’双引号 • ‘\\’反斜杠 • printf(“%c%c%c”,‘1’,‘\n’,‘2’, \n’);

小结
• 在计算机里,用数字来代表字符。
• 字符常量:‘A’,‘0’, …以单引号括起来, 它们本身就代表了一个数字
• 用%c来打印一个字符
• 特殊字符(转义字符) • 前面加反斜杠 ‘\n’

2字符数组

字符数组
用char型数组来表示“一串字符”
两种初始化方法:
(1) 像普通数组一样初始化
char str[6] = { ‘h’, ‘e’, ‘l’, ‘l’, ‘o’,’`\0` };

(2) 特殊的初始化方法
char str[6] = “hello”;
注:在内存窗口里查看

当作字符串打印
char str[6] = “hello”;
printf(“%s”,str);
① 加入特殊字符(转义字符)
char str[] = “hello \n123 \n”;
char str[] = “my name:\”shaofa\””;
char str[] = “d:\cpp\hello\”;

字符串结束符’\0’
• printf在打印一串字符时,遇到’\0’结束 (也就是数字0
char str[6] = “hello”;
str[2] = 0; // 中间插入一个0
printf(“%s”,str);

字符串长度
• 从头开始,一直到结束符0,中间的字符数。
• char str[6] = “hello”; // 长度是多少有效字符?
• str[2] = 0; // 长度是多少?

字符串结束符’\0’
• 如果一串字符没有以0结束,则printf会一直尝试 打印下去。。。
• char str[6] = { ‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘A’ };
• printf(“%s”,str);

注意事项
• (1) 数组要足够大: length + 1
• char str[128] = “hello”; // !!错,不够大
• (2) 不以0结束的字符串,不是正常的字符串
• (3) 0之后的字符不会被打印出来

学习资源 《C语言/C++学习指南》语法篇(从入门到精通)》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值