前面讨论过一维数组的概念,一维数组只有一个下标。
声明一维数组
在C语言中,声明一维数组的语法为:
类型说明符 数组名[常量表达式];
其中类型说明符可以是C语言中任何有效的数据类型,如int、float、char等。数组名是引用数组的名称,数组名的命名需符合变量命名规则。常量表达式可以是大于零的整数常量,也可以是表达式,表达式计算结果必须返回大于零的整数。
例如:
int a[6];
//定义了一个数组,名称为a,数组中的元素类型是int,数组大小为6个元素。
float score[3+3];
//定义了一个数组,名称为float,数组中的元素类型是float,数组大小为5个元素。
一维数组的初始化
声明了一个数组,数组元素的值是随机数,要使用数组还需要对数组元素进行初始化,数组元素初始化后才能使用。
数组的初始化有两种方法,一种是静态初始化,另一种是动态赋值。
① 静态初始化
在声明数组时,直接给数组的每个元素赋上一个初始值。静态初始化一般在数组元素比较少时使用。
静态初始化的语法为:
数组类型 数组名[常量表达式]={值1, 值2,……, 值n};
或为:
数组类型 数组名[]={值1, 值2,……, 值n};
初始化时若不指定数组元素,数组元素的长度以初始化的元素个数为准。若指定了元素长度,初始化元素的个数不能大于指定的数组长度。
例如:
int a[] = {26,67,89,106,210};
float score[5] = {87.5,67.2,96.8,92.6,75.9};
char chArray[] = {‘a’,’m’,’o’,’p’,’q’};
对于数组a,可以看出数组中有5个元素,分别是a[0]、a[1]、a[2]、a[3]、a[4]、a[5],即数组下标从0开始,这5个元素的数值依次为a[0]=26、a[1]=67、a[2]=89、a[3]=106、a[4]=210。其在内存中结构如下图所示。

错误的初始化:
int a[];
a[] = {26,67,89,106,210};
数组的初始化只能在声明中完成,不能声明完成后,再进行初始化,数组的大小由初始化的元素决定。
② 数组的动态赋值
有时,数组并不需要在声明时就赋初值,而是在使用时才进行赋值。另外,有些数组比较大,元素非常多,用静态初始化不方便,这样就需要使用动态赋值。
●先声明数组
例如:
int a[10];
float = b[5];
a[0] = 20;
b[1] = 3.14f;
一维数组元素的访问
使用数组的最基本操作是数组元素的访问,对数组的使用最终都通过对元素的使用而实现。数组的元素通过数组下标进行访问。前面已经讲过,在C语言中,数组下标是从0开始的,所以包含n个元素的数组下标的范围是0到n-1。例如:前面定义的数组a,其下标范围为0到4。要访问a数组的元素,可通过a[0]、a[1]、a[2]、a[3]、a[4]访问a数组的各个元素,此时,方括号中的数字是数组的下标,表示访问数组的第几个元素。
下面通过一个完整的示例,演示如何声明一个数组,并为数组动态赋值。
例【1】5件商品以内的价格小计
编程要求:要求用户输入5件商品的价格,并循环输出商品的价格,最后输出商品的累计价格。
程序清单 sample.c
#include <stdio.h>
int main()
{
//声明存储商品总价的变量,并初始化为0.0
float price[5]={0.0f,0.0f,0.0f,0.0f,0.0f};
// 商品累计价格
float total = 0.0f;
//count为循环次数
int count = 5;
//i为循环变量
int i;
//循环接收用户输入的5个商品价格
for( i=0; i < count; i++ )
{
printf("请输入 %d 个商品的价格: ",i+1);
//用户输入的第i件商品价格赋值给price数组的第i个元素
scanf("%f",&price[i]);
total += price[i];
printf("\n");
}
printf("*****商品小计******\n");
//循环输出商品的价格:
for( i=0; i < count; i++ )
{
printf("第 %d 件商品价格为:%.2f;\n",i+1,price[i]);
}
printf("商品价格合计为: %.2f",total);
}