一批具有同名的同属性的数据就组成一个数组(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,要求按逆序输出。
编写程序:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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(" 转序后的排序为:"); 12 for(i=9;i>=0;i--) 13 printf("%d ",a[i]); 14 printf(" "); 15 return 0; 16 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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};
将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分隔。花括号内的数据就称为“初始化列表”。经过以上的定义和初始化之后,a[0] = 0,a[1] = 1…
(2)可以只给数组中的一部分元素赋值。如:
int a[10] ={0,1,2,3,4};
定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,系统自动给后5个元素赋初值为0.
(3)如果想使一个数组中全部元素值为0,可写成:
int a[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
或
int a[10] = {0}; //未赋值的部分元素自动设为0
(4)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。如:
int a[5] = {1,2,3,4,5};
也可写成:
int a[] = {1,2,3,4,5};
虽然没有在方括号中指定数组的长度,但是系统会根据花括号中的数据的个数确定a数组有5个元素。但是,如果数组长度与提供的初值个数不相同,则方括号中的数组长度不能省略。如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成:
int a[10] = {1,2,3,4,5};
只初始化前5个元素,后5个元素为0.
说明:如果在定义数值型数组时,指定了数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统会自动帮忙初始化。(如果是整型则初始化为0;如果是字符型数组,则初始化为‘