内容正文:
编程语言基础——C语言
5.3 字符数组的定义和使用
第5章 数组
高等教育出版社
教学目标
一
掌握字符数组的定义和使用方法。
1
2
掌握字符串的概念和应用。
3
掌握字符数组的输入与输出。
教学重难点
二
字符数组的定义和使用方法。
1
2
掌握字符数组的输入与输出。
3
了解常用的字符串处理函数。
导入新课
三
提问:
(1)何为数组?
(2)数组的定义形式?
类型说明符 数组名[常量表达式]
例: int a[10]
结论:当数组长度为n,则元素下标从0~n-1
数组是有序数据的集合
导入新课
三
(3)数组的赋值形式
数组在计算机的内存中占据一片 空间
连 续
数组赋值时每个元素的值自动按 顺序 排放
int a[10]={1,3,5,7,9,11,13,15,17,19}
1
3
5
7
9
11
13
15
17
19
数组 a
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
例:若要使得
a[0]=1 a[1]=3 a[2]=5 a[3]=7 a[4]=9
a[5]=11 a[6]=13 a[7]=15 a[8]=17 a[9]=19
新知讲授
四
C语言中有字符常量和字符变量,有字符串常量,但没有字符串变量。如何存储字符串?
字符数组
常量的类型
整型常量 10
实型常量 0.75
字符常量 ‘a’
字符串常量 “china”
变量的类型
整型变量
实型变量
字符变量
例: int a=10
float b=0.75
char c=‘a’
前面在对数组的介绍中主要是针对整数和实数类型举例,在具体应用中,字符数组是常用的一种数组类型。字符数组即数组元素为字符类型。字符数组可以存放字符串数据。
新知讲授
四
字符数组的定义类似于前面介绍的一维数组的定义,只是它的元素类型为char,元素的下标仍从0开始。
字符数组的定义和引用
5.3.1
例如:
char s[6];
它有6个元素:s[0]、s[1]、s[2]、s|3]、s[4]、s[5]。
字符数组的每个元素存储一个字符,因此对数组元素应该赋予字符类型或整数类型的值。
字符数组的定义
字符数组的定义和引用
5.3.1
在C语言中,字符串是当做字符数组处理的,同样可以用字符数组来存储字符串。例如:
char s1[10]={ ‘f', 'a','s', 'h',‘i',‘o', 'n' };
实际上是定义了一个字符数组s1存放字符串"fashion", 当然s1作为一个字符数组变量也可以存储其他字符串的内容。
字符数组的定义和引用
5.3.1
C语言规定字符’\0'(一个ASCII值为0的字符)作为字符串的结束标志符。因此,在存储字符串常量时自动在其末尾添加’\0'。例如,字符串常量"perfect"在内存中的表示如图5- 6所示。
字符数组的定义和引用
5.3.1
在实际应用中,人们关心的是字符串的长度而不是字符数组的长度。上例中,字符数组s1有10个元素,占10个字节,它存储的字符串长度为7;而字符串常量"perfetr “有7个字符,字符串长度为7,而在内存中它占8个字节(多存储了一个字符串结束符’\0' )。
字符数组的初始化与一维数组相同,字符数组的初始化也可以全部赋值或部分赋值,例如:
①char s1[10]={‘f', 'a', 's', ‘h', ‘i’, 'o', 'n' };
该定义只对前7个元素赋值,后3个元素为零值(即ASCII码为0的字符)。它在内存中的表示如图5-7所示。
字符数组的初始化
5.3.2
同其他数组一样,若{}内的字符个数超过数组长度将作为语法错误处理。
②char s2[10]=("fashion"};
实际效果同①,只是书写更简洁。但这两种方式在使用时字符个数应少于数组长度,确保末尾至少有一个’\0',这样做是为了程序处理方便和避免出错。
字符数组的初始化
5.3.2
③char s3[ ]={ "perfect" }, s4[ ]="perfect";
在定义字符数组时,若一维长度缺省,则字符串长度由赋值号右边的字符串常量的字符个数决定。系统在字符串常量末尾自动加一个’\0' 作为结束符, "prefect"的串长为7,因此字符数组s3和s4的数组长度均为8,字符数组s3和s4的存储表示如图5-8所示。
字符数组的初始化
5.3.2
由于有了‘\0'作