考试辅导:C语言教程第四章:数组
第4章:数组
数字组
在数组编程中,为了处理的方便,将几个同类型的变量以有序的形式组织起来。这些按顺序排列的同类数据元素的集合称为数组。在C语言中,数组是构造的数据类型。一个数组可以分解成多个数组元素,可以是基本数据类型,也可以是构造类型。因此,根据数组元素的类型,数组可以分为数值数组、字符数组、指针数组、结构数组等类别。
本章介绍数值数组和字符数组,其余将在后面的章节介绍。类型描述:在C语言中使用数组时,必须先进行类型描述。数组描述
的一般形式是:类型说明符数组名[常量表达式],………;类型描述符是任何基本数据类型或构造数据类型。阵列名称是用户定义的阵列标识符。方括号中的常量表达式表示数据元素的数量,也称为数组的长度。
例如:
int a[10];解释整数数组A,有10个元素。
float b[10],c[20];说明实数组B有10个元素,实数组C有20个元素。
char ch[20];描述字符数组ch,它有20个元素。
数组类型的描述需要注意以下几点:
1 .数组的类型实际上是索引组元素的值类型。对于同一个数组,它的所有元素都具有相同的数据类型。
2。数组名的书写规则应该符合标识符的书写规则。
3。数组名不能与其他变量名相同,例如:
void main()
{
int a;
float a[10];
…
}
不对。
4。方括号中的常量表达式表示数组元素的个数。例如,a[5]表示数组A有五个元素。但是它的下标是从0开始计算的。所以五行分别是A [0],A [1],A [2],A [3],A [4]。
5。变量不能用方括号表示元素个数,但可以是符号常量,也可以是常量表达式。例:
# define D5
void main()
{
int a[3+2],b[7+FD];
…
}
合法。但下面的解释是错误的。
void main()
{
int n = 5;
int a[n];
…
}
6。允许在同一类型描述中指定多个数组和变量。
例如:int a,b,c,d,k1[10],k2[20];
数组元素的表示
数组元素是数组的基本单元。数组元素也是一个变量,由数组名后跟一个下标来标识。下标表示数组中元素的序号。数组元素的一般形式是:数组名[下标],其中下标只能是整数常量或整数表达式。如果是十进制数,C编译会自动四舍五入。比如A [5]、A [I+J]和A [I++]都是合法的数组元素。元素通常也被称为下标变量。在使用下标变量之前,必须定义一个数组。在C语言中,下标变量只能一个一个的使用,不能一次引用整个数组。比如输出一个有10个元素的数组,就必须用一个loop语句来逐个输出每个下标变量:
for(I = 0;ivoid main()
{
int i,a[10];
for(I = 0;ia[i++]= 2 * I+1;
for(I = 9;I > = 0;i - )
printf("%d ",a[I]);
printf("\n%d %d\n ",a[5.2],a[5.8]);
}
在这个例子中,使用一个循环语句向数组A的每个元素输入奇数,然后使用第二个循环语句从最大到最小输出奇数。在第一个for语句中,表达式3被省略。表达式i++在下标变量中用来修改循环变量。当然,第二个for语句也可以做到这一点。c语言允许用表达式表示下标。程序中的最后一个printf语句两次输出a[5]的值。可以看到,当下标不是整数时,会自动四舍五入。数组到数组赋值的方法除了用赋值语句给数组元素逐个赋值外,还可以采用初始化赋值和动态赋值。数组初始化赋值数组初始化赋值是指在数组描述时给数组元素赋值初始值。数组的初始化在编译阶段完成。这样可以减少运行时间,提高效率。
初始化的一般形式是:静态类型描述符数组名[常量表达式] = {value,value…value };其中,static表示静态存储类型,C语言规定只能对静态存储数组和外部存储数组进行初始化和赋值(对于静态存储,第五章介绍了外部存储的概念)。{}中的每个数据值都是每个元素的初始值,值之间用逗号分隔。比如:static int a [10] = {0,1,2,3,4,5,6,7,8,9 };相当于a[0]= 0;a[1]=1...a[9]= 9;
位律师回复
0条评论