VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 740|回复: 20

《实用C++》第20课 字符数组

[复制链接]
Syc 发表于 2018-1-14 17:19:29 | 显示全部楼层 |阅读模式


1、什么是字符数组?
说白了,字符数组就是数组中存放的是字符,即 char 类型。例如:char szbuf[50];
因为字符串本身就是有一个一个的字符组合而成的,所以,字符数组可以理解为是一个字符串。在以后的C++编程过程中会遇到各种各样对字符串的操作。

2、字符数组的初始化:
方式①:定义之后分别对每个字符初始化;
  1. char szbuf[10];
  2. szbuf[0] = 'h';
  3. szbuf[1] = 'e';
  4. szbuf[2] = 'l';
  5. szbuf[3] = 'l';
  6. szbuf[4] = 'o';
复制代码

备注:未初始化的部分值随机。

方式②:定义即初始化:
  1. char szbuf[10] = {'h', 'e', 'l', 'l', 'o'};
复制代码

或者:
  1. char szbuf[10] = "hello";
复制代码

备注:未初始化的部分值为0.

注意:
如果初始值的个数小于数组的长度,则只将这些字符赋值给数组中前面的那些元素,其余元素自动赋值为 \0 字符,也就是0;
如果初始值的个数大于数组的长度,则直接报语法错误。

方式③、自动初始化长度:
  1. char szbuf[] = {'h', 'e', 'l', 'l', 'o', ' ', 'f', 'r', 'i', 'e', 'n', 'd', 's', ' ', 'I', ' ', 'a', 'm', ' ', 'c', 'c', 't', 'r', 'y', '.', 'c', 'o', 'm'};
复制代码

如果字符串的长度比较长,而且要定义的数组长度就是字符串的长度,那么就可以使用此方法。

或者:
  1. char szbuf[] = "hello friends I am cctry.com";
复制代码


3、字符数组与字符串的区别:
区别就是字符串比字符数组多了一个结束标志的字符:'\0',这个字符的ASCII码就是0,所以作为一个字符串来说,其有效字符就是结束标志\0之前的字符。字符串的长度也是结束标志\0之前的字符,但是字符串所占用的字节数或者说字符串所占用的空间是包含字符串结束标志\0的。所以一般情况下关于一个字符串的长度不用很显示的给出或者告诉,直接对当前字符串从头往后找结束标志\0就可以了,遇到了就表示这个字符串结束了。
例如:
  1. char szbuf[5];
  2. szbuf[0] = 'h';
  3. szbuf[1] = 'e';
  4. szbuf[2] = 'l';
  5. szbuf[3] = 'l';
  6. szbuf[4] = 'o';
复制代码

这个就是个字符数组,不是字符串,因为结尾没有字符串结束的标志\0,但是如果我这样定义:
  1. char szbuf[6];
  2. szbuf[0] = 'h';
  3. szbuf[1] = 'e';
  4. szbuf[2] = 'l';
  5. szbuf[3] = 'l';
  6. szbuf[4] = 'o';
  7. szbuf[5] = '\0';
复制代码

这个字符数组就可以看成是一个字符串,因为他满足字符串的所有条件。

再来看一个例子:定义即初始化:
  1. char szbuf[10] = {'h', 'e', 'l', 'l', 'o'};
复制代码

因为数组的长度是10,hello5个字符的长度是5,所以之后剩下的5个未被初始化的字符会置为0,所以这种方式满足字符串的条件。
或者:
  1. char szbuf[10] = "hello";
复制代码

这种方式使用一个字符串来初始化字符数组,因为用字符串来进行初始化,所以会把字符串结束标志\0一并初始化给字符数组szbuf的,所以这种方式也满足字符串的条件。

4、字符数组的输入与输出:
举例①:
  1. char szbuf[50];
  2. cin >> szbuf;
  3. cout << szbuf << endl;
复制代码


举例②、
  1. char szbuf[50] = {'h', 'e', 'l', 'l', 'o', '\0', ' ', 'f', 'r', 'i', 'e', 'n', 'd', 's', '.'};
  2. cout << szbuf << endl;
复制代码

大家猜猜会输出什么内容呢?

5、小作业:
题目:字符数组定义如下:
  1. char szbuf[100] = "hello, friends, my name is cctry.com. what is your name ?";
复制代码

遍历字符数组 szbuf,将其中的字符 i 替换成 @ 符号,并统计其个数。最后将统计的个数及整个字符串的内容都输出出来?
大家试试吧!

第20课免费试看,下载地址(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

#######################################################
获得所有教学视频、课件、源代码以及售后答疑详见:
《实用C++》:http://www.cctry.com/thread-275996-1-1.html
VC驿站官方客服QQ:8260671

#######################################################

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

csa 发表于 2018-1-17 10:17:36 | 显示全部楼层
又更新了,不错,谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

guanghua1214 发表于 2018-1-25 20:02:55 | 显示全部楼层
快过年了支持老师明年继续出教程!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

Mtong 发表于 2018-1-27 11:05:30 | 显示全部楼层
快过年了支持老师明年继续出教程!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

zp521 发表于 2018-2-5 21:57:34 | 显示全部楼层
更新了,继续学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

yyanjun 发表于 2018-2-5 22:28:52 | 显示全部楼层
学习字符数组~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

明天你好123 发表于 2018-2-5 23:21:33 | 显示全部楼层
HELLO WORLD

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

tomok 发表于 2018-2-6 09:15:44 | 显示全部楼层
楼主辛苦了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

labc123 发表于 2018-2-6 09:52:27 | 显示全部楼层
收下,谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

zxnnnnn 发表于 2018-2-6 10:07:19 | 显示全部楼层
学习一下

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

zhangxinsong 发表于 2018-2-7 02:37:09 | 显示全部楼层
ddddddddddddd

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

这个杀手不太冷 发表于 2018-2-7 13:38:18 | 显示全部楼层
楼主辛苦了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

wssfcn 发表于 2018-2-7 18:26:58 | 显示全部楼层
看看      

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

ping170 发表于 2018-2-8 10:09:22 | 显示全部楼层

快过年了支持老师明年继续出教程!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

听雨声等你笑 发表于 2018-2-9 08:07:01 | 显示全部楼层
学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

jesy 发表于 2018-2-10 12:54:36 | 显示全部楼层
快过年了支持老师明年继续出教程!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

冥蝶 发表于 7 天前 | 显示全部楼层
天天学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

yuanpinq 发表于 7 天前 | 显示全部楼层
rhf rhf rhf

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

Acher陈 发表于 6 天前 | 显示全部楼层
再复习一下;讲得真的很透彻,非常好

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

小菜一碟 发表于 5 天前 | 显示全部楼层
紧跟老大的脚步,继续学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站

本版积分规则

 
 
在线客服
工作时间:
8:00-18:00
客服热线:
13591366679
官方微信扫一扫

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )

返回顶部
x

VC驿站微信公众号cctry2009

GMT+8, 2018-2-18 11:21

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表