文章目录
一、数组
通俗的说数组就是同类型的一群数据,定义一个数组,就是定义一群数据。例如,学生成绩管理系统中,你不可能来一个定义一个学生的姓名、学生的学号,学生的成绩。这样既费事,还要为每个变量命名。
所以在C语言中提出了数组这个东西。之前说过定义一个数组,就是定义一群数据。所以大概的定义如下:
int stu_num[50];
这样一定义之后,就一下子定义了50个int类型的变量,他们统一放在一个数组里面。
定义数组
数组的基本定义格式如下:
类型名 数组名[常量表达式];
注意,[ ]内部的常量表达式用以表示数组中元素的个数,这个必须是个常量或常量表达式,不能是个变量或者一个不确定的值,不然编译阶段就直接报错了。因为定义好了之后,系统马上就根据这个个数来分配空间了。如果是个变量,系统就不知道要分配多少空间。
数组名字的命名规则跟变量是一样的,只能使用数字、字母、下划线,而且数字不能做开头。
访问数组中的元素:
数组必须先定义之后再使用,需要通过下标来访问,具体的访问格式如下:
数组名[元素下标];
这个元素的下标是从0开始的,例如:int stu_num[60]; 那么下标就是 0~59。
备注:这个下标可以是常量也可以是变量,但必须在规定的范围内访问,不然会出现访问越界,导致程序崩溃的重大低级问题。
一维数组的初始化:
①、在定义数组的时候就对数组的全部元素初始化:
int stu_num[5] = {101, 102, 103, 104, 105};
②、在定义数组的时候对部分元素进行初始化:
int stu_num[5] = {101, 102};
后面未初始化的默认赋初值0
其实就是:stu_num[0]=101, stu_num[1]=102, stu_num[2]= stu_num[3]= stu_num[4]=0
③、在定义数组的时候就对数组的全部元素初始化,可以不指定数组长度:
int stu_num[] = {101, 102, 103, 104, 105};
不管是定义的时候指定长度还是不指定长度,总结起来就一个规则,定义的时候让系统知道数组的长度就可以了,也就是定义即确定大小。
二、字符数组
字符数组就是数组中存放的是字符,即 char 类型。例如:char stu_name[50];
因为字符串本身就是有一个一个的字符组合而成的,所以,字符数组可以理解为是一个字符串。在以后的C++编程过程中会遇到各种各样对字符串的操作。
字符数组的初始化
方式①:定义时初始化
char stu_name[3] = {‘x’, ‘y’, ‘z’};
或者 char stu_name[] = {‘x’, ‘y’, ‘z’}; // 自动初始化长度,让编译器去数(与数组一样)
或者 char stu_name[] = “xyz”; // 自动初始化长度,让编译器去数(与数组一样)
或者 char stu_name[3] = “xyz” ;
方式②:定义之后分别对每个字符初始化;
stu_name[0] = ‘x’;
stu_name[1] = ‘y’;
stu_name[2] = ‘z’;
字符数组的输入与输出
C语言标准库常用的字符操作函数
函数 | 目的 |
strcpy(s1, s2); | 复制字符串 s2 到字符串 s1。 |
strcat(s1, s2); | 连接字符串 s2 到字符串 s1 的末尾。 |
strlen(s1); | 返回字符串 s1 的长度。 |
strcmp(s1, s2); | 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。 |
strchr(s1, ch); | 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 |
strstr(s1, s2); | 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 |
字符数组与字符串的区别
区别就是字符串比字符数组多了一个结束标志的字符:’\0’,这个字符的ASCII码就是0。
字符串的有效字符就是结束标志\0之前的字符。字符串所占用的字节数包含字符串结束标志\0
的。
三、字符串
C++ 标准库提供了 string 类类型,支持上述C语言标准库常用的字符操作函数,还提供如下方便的操作: