一批具有同名的同属性的数据就组成一个数组(array),s就是数组名
由此可知:
(1)数组是一组有序数据的集合。数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号。
(2)用一个数组名(如s)和下标(如15)来唯一地确定数组中的元素,如s15就代表第15个学生的成绩。
(3)数组中的每一个元素都属于同一个数据类型。不能把不同类型的数据放在同一个数组中。
C语言规定用方括号中的数字来表示下标,如用s[15]表示s15,即第15个学生的成绩。
6.1 怎样定义和引用一维数组
一维数组是数组中最简单的,它的元素只需要用数组名加一个下标,就能唯一确定。
6.1.1 怎样定义一维数组
要想使用数组,就需要先定义数组,才能使用。下面是对数组的定义:
int a[10];
它表示定义了一个整形数组,数组名为a,此数组有10个整型元素。
定义一维数组的一般形式为:
类型符 数组名[常量表达式];
说明:
(1)数组名的命名规则和变量名相同,遵循标识符命名规则。
(2)在定义数组时,需要指定数组中元素的个数,方扩种的常量表达式用来表示元素的个数,即数组长度。
(3)常量表达式中可以包括常量和符号常量。不能包含变量;C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
说明:如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量和非常量表达式。
void func(int n)
{
int a[2*n]; //合法,n的值从实参传来
……
}
如果指定数组为静态(static)存储方式,则不能用“可变长数组”。如:
static int a[2*n]; //不合法,a数组指定为static存储方式
6.1.2 怎样引用一维数组元素
在定义数组并对其中的各元素赋值后,就可以引用数组中的元素。应注意:只能引用数组元素而不能一次整体调用整个数组全部元素的值。
引用数组元素的表示形式为:
数组名[下标]
如,a[0]就是数组a中序号为0的元素,它和一个简单变量的地位和作用相似。“下标”可以是整形常量或整形表达式。如:
a[0] = a[5]+a[7]-a[2*3]
每一个数组元素都代表一个整数值
注意:定义数组时用到的“数组名[常量表达式]”和引用数组元素时用的“数组名[下标]”形式相同,但含义不同。如:
int a[10]; //这里的a[10]表示的是定义数组时指定数组包含10个元素
t = a[6]; //这里的a[6]表示引用a数组中序号为6的元素
例:将10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。
编写程序:
1 #include <stdio.h> 2 int main() 3 { 4 int i=0,a[10]; 5 printf("转序前的排序为:"); 6 for(i=0;i<=9;i++) 7 { 8 a[i] = i; 9 printf("%d ",a[i]); 10 } 11 printf("\n转序后的排序为:"); 12 for(i=9;i>=0;i--) 13 printf("%d ",a[i]); 14 printf("\n"); 15 return 0; 16 }
1 转序前的排序为:0 1 2 3 4 5 6 7 8 9 2 转序后的排序为:9 8 7 6 5 4 3 2 1 0 3 请按任意键继续. . .
注意:数组元素的下标从0开始,如果用“int a[10];”定义数组,则最大下标值为9,不存在数组元素a[10]。下面是常见的错误:
for(i = 1;i<=10;i++) //循环变量从1开始,变到10
a[i] = i; //下标从1开始,变到10
for(i = 10;i>=1;i--)
printf("%d",a[i]);
6.1.3 一维数组的初始化
为了使程序简洁,常在定义数组的同时,给各数组元素赋值,这称为数组的初始化。可以用“初始化列表”方法实现数组的初始化。
(1)在定义数组时对全部数组元素赋予初值。如:
int a[10] = {0,1,2,3,4,5,6,7,8,9};
将数组中各元素的初值顺序放在