1、数组
具有同一属性的若干个数据组成一个整体,存放的可以使数值、字符、指针、结构体等
2、一维数组
(1)定义一个一维数组:类型符 数组名[常量表达式]
a、数组名的命名规则和变量名的相同,遵循标识符命名规则
b、定义数组时,需要制定数组中元素的数目,即方括号中的常量表达式,数组长度
c、数组的下标是从0开始的
d、常量表达式可以是常量也可以是符号常量
(2)引用一维数组的元素
数组名[下标]
(3)一维数组的初始化
给一维数组赋初始值
a、在定义数组时对全部数组元素赋初值
int a[3]={1,2,3};
b、可以只给一部分元素赋值
int a[5]={1,2,3,4}
c、如果定义数组的长度与初始化的数据的个数相同,则定义数组时可以不写数组长度
int a[3]=[1,2,3] 相当于 int a[]={1,2,3}
3、二维数组
(1)定义一个二维数组: 类型名 数组名 [常量表达式][常量表达式]; 前行后列
二维数组中元素排列的顺序是按行存放的,一个元素占4个字节,即在内存中先顺序存放第一行的元素,再存放第二行的元素,是线性,连续存放的
(2)引用二维数组
数组名[下标][下标]
(3)二维数组的初始化
a、分行给二维数组赋初值
int a[2][3]={{1,23},{4,5,6}};
b、可以将所有数据写在一个大括号内
int a[2][3]={1,2,3,4,5,6};
c、可以对部分元素赋值
int a[2][3]={{1},{4}};
d、如果对全部元素都赋初值,则定义数组时对第一维长度可以不指定,但第二维长度不能省
int a[][3]={1,2,3,4,5,6};
4、字符数组
定义、引用、初始化和前面一样,空格也是一个字符
如果赋初始值的个数大于数组长度,则按语法错误处理,若小于,则后面的用空字符表示
二维字符数组可以表示一个图案
5、字符串和字符串结束标志
为了测量字符串的实际长度,c语言规定了一个字符串结束标志,以字符‘\0’作为标志
编译系统中在处理字符串常量时也会自动加一个‘\0’作为结束符,‘\0’代表ASII码为0的字符,不显示的字符,空操作符,是辨别标志
如果字符数组先后存放多个字符串,则应使数组的长度大于最大字符串长度
对于字符数组,为赋的部分元素默认值为空字符,而在数值型数组中默认为0
6、字符数组的输入输出
(1)逐个字符输入输出,用格式符“%c”输入输出字符
(2)将整个字符串一次输入输出,用格式符“%s”,string
a、输出字符不包括结束符‘\0’
b、用“%s”输出字符串时,printf函数中的输出项是字符数组名(字符数组名代表数组的首地址),而不是数组元素名
c、如果数组长度大于字符串长度,也只输出到‘\0’结束
d、如果字符串中含有多个‘\0’,则在第一个时输出就结束
f、可以用scanf函数输入一个字符串
g、输出数组的首地址:printf("%d",str);
7、字符串处理函数
gets(字符数组):从终端输入一个字符串到数组
puts(字符数组):将一个字符串(以‘\0’结束)输出到终端
strcat(字符数组1,字符数组2):连接两个字符数组中的字符串,把2字符串连到字符串1的后面
strcpy(字符数组1,字符数组2):将字符串2复制到字符数组1中
strlen(字符数组):测试字符串长度
strcmp(字符串1,字符串2):比较字符串1和字符串2,1=2函数值为0,1>2函数值为一个正整数,1<2函数值为一个负整数
strwr(字符串):将字符串中大写字母换成小写字母
strupr(字符串):将字符串中小写字母换成大写字母