C语言中的数组和字符串
一、数组的基本概念
所谓数组,就是按一定顺序排列,具有某种相同性质的同类型变量的集合。这些变量具有相同的名字和数据类型,在内存中顺序排列,并通过下标相互区分,所以也叫下标变量。数组中的各数据项成为元素,用数组名和下标表示。
例如:int a[5];
分析:这里a是一个基本数据类型int的数组,它由5个元素组成,即:a[0]、a[1]、a[2]、a[3]、a[4]。
二、一维数组
1.一维数组的定义
定义一维数组的形式为:(数据类型 数组名[整型常量表达式];)
说明:a.数据类型是数组中全体数组元素的数据类型。
b.数组名用标识符表示,整型常量表达式代表数组具有的元素个数。
c.数组元素的下标一律从0开始。
d.编译程序为数组开辟连续的存储单元,用来顺序存放数组的各数组元素。用数组名表示该数组存储的首地址。
2.一维数组的引用
引用数组元素的形式为:(数组名[下标表达式])
例如:
#include <stdio.h>
int main(void) {
int a[3], k=10;
a[3] = 5;
k = k + 7;
printf("a[3]=%d, k=%d\n", a[3], k);
}
输出:a[3]=12, k=12
分析:因为,a[3]不是a数组的数组元素(下标越界),根据数组元素连续存放的规则,a[3]代表 a[2]的下一个存储单元,即k变量的存储单元。
执行a[3]=5;就是把5存放到k变量的存储单元,于是k的值由10变成5。在执行k=k+7;则k的值由5变成12。因为a[3]和k变量对应同一个存储单元,所以a[3]的
值也是12。
3.一维数组的初始化
一维数组初始化的形式为:(数据类型 数组名[整型常量表达式]={初值1,初值2,......};)
注:初始化的数据个数不能超过数组元素的个数,否则出错。
a.只给部分数组元素初始化:static int a[4] = {1, 2};(上述语句只给a[0]、a[1]赋了初值,即a[0] = 1;a[1] = 2;)
static为静态存储,存储类型为static的变量或数组的初值自动设置为0。
4.一维数组的应用
下面程序假定有十个数(要计算100个数的平均值及其大于平均值的数,只需将符号常量N改为100即可):
三、二维数组
1、二维数组的定义
二维数组的定义形式为:(数据类型 数组名[整型常量表达式][整型常量表达式];)
例如:int a[2][3];
分析:该语句表示:a.定义了整型二维数组a,其数组元素的类型是int。
b.a数组有2行3列,共2*3=6个元素。
c.a数组行下标为0、1,列下标为0、1、2.
a数组的元素是:a[0][0],a[0][1],a[0][2]
a[1][0],a[1][1],a[1][2]
2、二维数组的引用
引用数组元素的形式为:(数组名[行下标表达式][列下标表达式];)
3、二维数组的初始化
二维数组初始化的形式为:(数据类型 数组名[整常量表达式] [整常量表达式]={初始化数据 };)
注:可以省略第一维的定义,但不能省略第二维的定义。系统根据初始化的数据个数和第二维的长度可以确定第一维的长度
4、二维数组的应用
输入5个学生的学号和3门课的成绩,求每个学生的平均成绩。输出所有学生的学号、3门课的成绩和平均成绩。
四、字符数组
字符串本身就是数组。
例如:char cCity[10] = "北京";(北京没有用[ ] 所以北京本身就是数组)