数组
1.定义
把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。
- 数组属于构造数据类型
- 按数组元素类型分为:数值数组、字符数组、指针数组、结构数组等
- 所包含的数据叫做数组元素
- 同一数组,所有元素的数据类型都相同
- 整个内存地址连续,每个数据元素所占空间大小相同
2.数组类型说明
类型说明符 数组名 [常量表达式],……;
-
类型说明符:任一种基本数据类型或构造数据类型
int a[10] 整数类型,有十个元素;
float b[10] 实数类型b,有十个元素; -
数组名:用户自己定义的数组表示符
-
[常量表达式]:数据元素的个数,即为数组长度,但是其下标从0开始计算。因此5个元素a[5]:a[0],a[1],a[2],a[3],a[4]
-
数组名不能与其他变量名相同,
void main()
{
int a;
float a[10];//与上边的整数a名字相同,不 合法
} -
方括号里不能用变量来表达元素个数,但可以是符号常数,或常量表达式。
#define FD 5
void main()
{
int a[3+2],b[7+FD]; //合法int n=5;//不合法
int b[n];
} -
允许在同一个类型说明中,说明多个数组和多个变量:int a,b,c,d,n1[10],n2[20];
3.表示方法
数组名 [下标]
- 下标表示元素在数组中的数组中顺序号,小数将会自动取整
- 只能逐个使用下标变量,可以使用循环语句逐个输出,但不能一次引用整个数组
printf("%d",a[i]); // 合法
printf("%d",a);//错误
4.赋值
1)初始化赋值
static 类型说明符 数组名[常量表达式] ={值,值……};
static int a[10] = {0,1,2,3,4,5,6}
- static 可以不写,表示的是静态储存类型,规定只有静态储存数组和外部储存数组才可初始化赋值
- {}里边为各元素初值,各值之间逗号隔开
- 可以只给部分元素赋初值,即当{ }中值的个数少于元素个数,只给前面部分赋值,后边值不够的元素自动赋值为0.但如果没有给可初始化的数组赋初值,则全部元素均为0
- 只能逐个赋值不能整体赋值。
int a[5]={1,1,1,1,1}; //合法
int a[5]=1;//不合法 - 如果给全部元素赋值,则在数组说明中,可以不给数组元素个数。
int a[3]={1,2,3};
int a[ ]={1,2,3};
2) 动态赋值
用循环语句配合scanf函数逐个对数组元素赋值
//输出一个数组,数组数组中最大的数组元素
void main()
{
int i,max,a[10];
printf("input 10 numbers: \n");
for(i=0;i<10;i++) //动态对数组逐个赋值
{
scanf("%d",&a[i]);
}
max = a[0]; //先设置一个初始的的最大值以供比较
for(i=1;i<10;i++) //将10个数组元素逐个比较
{
if(a[i]>max)
{
max = a[i