数组
一批具有同名的同属性的数据就组成了数组
数组是一组有序数据的集合,下标代表数据在数组中的序号。
数组中的每一个元素都属于同一个数据类型
一维数组
一维数组是数组中最简单的,它的元素只需要用数组名加一个下标, 就能唯一确定
定义一维数组
类型符 数组名 [ 常量表达式 ] ;
注意:
-
数组名的命名规则和变量名相同,遵循标识符命名规则
-
需要指定数组中元素的个数,常量表达式用来表示元素的个数,即数组长度,元素的下标是从0开始的
-
常量表达式也可以包括常量和符号常量,不能包括变量。C语言不允许对数组的大小作动态定义
引用数组
数组名 [ 下标 ] ;
一维数组的初始化
为了使程序简洁,常在定义数组的同时给各数组元素赋值,,这称为数组的初始化
另外-未赋值的部分元素自动设定为0;
二维数组
一般形式:
类型说明符 数组名 [ 常量表达式 ] [ 常量表达式 ] ;
在内存中,各元素是连续存放的,不是二维的
引用:
数组名 [ 下标 ] [ 下标 ] ;
下标应是整型表达式
二维数组初始化
1、分行给二维数组赋值 int a [3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 2、将所有数据写在一个花括号内 int a [3][4] = {1,2,3,4,5,6,7,8,9,10,11,12} 3、对部分元素赋初值 int a[3][4] = {{1},{5},{9}}; 未赋值的值(其余元素值)自动为零 4、定义数组时对第1维的长度可以不指定,但第2维的长度不能省 int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
字符数组
用来存放字符数组的数组是字符数组。在字符数组中的一个元素内存一个字符
字符型数据是以整数形式(ASCII代码)存放的,
字符数组的初始化
把各个字符依次赋给数组中各元素,例如:
char a[10] = {'i',',','a','m'}; 如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误; 如果初值个数小于数组长度,则只将这些字符赋给数组中前面的元素,其余的元素自动定为空字符(即‘\0’); %c——输出一个字符; %s——输出字符串
C语言规定了一个“字符串结束标志”,以字符“\0”作为结束标志
例如: 一个数组中存在若干个字符,前面9个字符串都不是空字符“\0”,而第十个是空字符“\0”,则认为数组中有一个字符串,其有效字符为9个。 也就是说,在遇到字符“\0”时,表示字符串结束,把它前面的字符组成一个字符串; C系统在用字符数组存储字符串时,会自动加上一个“\0”作为结束符,
在定义字符数组时应该估计实际字符串长度,保证数组的长度始终大于字符串实际长度。
-
输出字符中不包括结束符“\0”。
-
数组中未被赋值的元素的值自动置为“\0”
-
可以用八进制形式输出输出字符数组的起始地址
printf("\o");
使用字符串处理函数
-
puts函数——输出字符串的函数
一般形式为——puts(字符串),
在用puts输出时将字符串结束标志'\0'转换成'\n'
-
gets函数——输入字符串的函数
一般形式——gets(字符数组)
puts和gets函数只能输出或输入以一个字符串
-
strcat函数——字符串连接函数
一般形式——strcat(字符数组1,字符数组2)
数组1必须足够大
-
strcpy和strncpy函数——字符串复制函数
一般形式——strcpy(字符数组1,字符串2)
将字符串2复制到字符数组1中
strncpy(str1,str2,2); ——将str2中最前面的2个字符复制到str1中,取代str1中原有的最前面的2个字符。
-
strcmp函数——字符串比较函数
一般形式——strcmp(字符串1,字符串2)
将两个字符串自左向右逐个字符串相比(按ASCII码大小比较),直到出现不同的字符或遇到“\0”为止
-
如果字符串1 = 字符串2 则函数值为0;
-
如果字符串1 > 字符串2 则函数值为一个正整数
-
如果字符串1 < 字符串2 则函数值为一个负整数
-
-
strlen函数——测字符串长度的函数
一般形式——strlen(字符数组)
-
strlwr函数——转换为小写的函数
strlwr(字符串)
-
strupr函数——转换为大写的函数
strupr(字符串)