定义数组
- <类型>变量名称【元素数量】
- int grades[100]
- double weight[20]
- 元素数量必须是整数
- C99之前:元素数量必须是编译时刻确定的字面量
数组
- 是一种容器(放东西的东西),特点是:
- 其中所有的元素具有相同的数据类型
- 一旦创建,不能改变大小
- 数组中的元素在内存中是连续依次排列的
int a[10]
- 一个int的数组
- 10个单元:a[0]、a[1]、……,a[9]
- 每个单元就是一个int类型的变量
- 可以出现在赋值的左边或右边;
- a[2]=a[1]+6;
- 在赋值左边的叫做左值
数组的单元
- 数组的每个单元就是数据类型的一个变量
- 使用数组时放在[]中的数字叫做下标或索引、下标从0开始计数
- grades[0]
- grade[99]
- average[5]
有效的下标范围
- 编译器和运行环境都不会检查数组下标是否越界,无论是数组单元做读还是写
- 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃
- segmentation fault
- 但是也可能是运气好,没造成严重的后果
- 所以这是程序员的责任来保证只使用有效的下标值:[0,数组的大小-1]
长度为0的数组?
- int a[0];
- 可以存在,但是无用
任务目的
计算平均数
任务实施
int x;
double sum=0;
int cnt;
printf("请输入数字的数量:");
scanf("%d",&cnt);
if(cnt>0){
int number[cnt];
scanf("%d",&x);
while(x!=-1){
number[cnt]=x;
sum+=x;
cnt++;
scanf("%d",&x);
}
如果先让用户输入有多少数字要计算,可以使用C99的新功能来实现