![](https://csdnimg.cn/release/download_crawler_static/86285816/bg4.jpg)
2014-3-29
4
7.2.1 一维数组的声明
例7.2 采用类型修饰符的一维数组的声明
static int y[10];
数组y中的每一个成员都是静态整型成员
extern double s[2];
2014-3-29 华中科技大学计算机学院 甘早斌 19
作了一个外部双精度型数组的引用性声明
应该在另外的源文件中通过double s[2];来定义s数组,这样第2
个声明语句才有意义
7.2.2 一维数组的使用
C提供的各种操作符
针对基本数据类型的变量
数组
是构造数据类型
但其元素是基本数据类型的变量,或构造类型的变量.
2014-3-29 华中科技大学计算机学院 甘早斌 20
访问数组
不需设计专门的数组操作符
方法:数组名[下标表达式]
例int a[5], j=2;
5个元素依次是a[0],a[1],a[2],a[3],a[4]
正确用法: a[j+2] 、a[++j] 、a[j--]、a[5*j-7]
错误用法:a[j-3] 、a[2*j+1] ?
例7.3 使用一维数组计算学生的平均成绩
1. #include 〞stdio.h〞
2. void main(void)
3. {
4. int score[30],i,sum=0;
2014-3-29 华中科技大学计算机学院 甘早斌 21
演示源程序\ex7_3.c
.
ou
e average;
6. printf("input the scores please:\n");
7. for(i=0;i<30;i++)
8. scanf(“%d”,&score[i]); /* 将键盘输入的成绩赋给各个数组元素 */
9. for(i=0;i<30;i++)
10. sum+=score[i]; /* 求学生成绩的累加和 */
11. average=sum/30.0; /* 计算平均成绩 */
12. printf("sum=%d\n",sum);
13. printf("average=%lf\n",average);
14. }
7.2.3 一维数组的初始化
显式初始化值的个数与说明长度相同
int x[5]={0,1,2,3,4};
int y[5]={0,1,2,3,4,5}; ?
有初始化值时,长度说明可缺省
2014-3-29 华中科技大学计算机学院 甘早斌 22
int y[]={1,2,3,4,5,6,7,8};
初始化值的个数可以小于说明长度,但只能缺省最后连
续元素的初值
int z[10]={0,1,2,3,4}; /*前5个下标变量赋值*/
int u[9]={ , 1, , ,2}; 错误!
7.2.4 一维数组的存储结构
存放方法
各个元素从数组名标明的起始地址开始在内存中连续存放
例如int a[5];
对于32位机,1个int变量占4个字节空间
2014-3-29 华中科技大学计算机学院 甘早斌 23
数组元素 a[0] a[1] a[2] a[3] a[4]
元素地址 a+0 a+1 a+2 a+3 a+4
&a[0] &a[1] &a[2] &a[3] &a[4]
例7.8 观察一维数组的存储情况的程序
1. #include "stdio.h"
2. #define SIZE 3
3. int main(void)
4. {
=
the value of x is 0x22ff30
k=0 x[0]=1 addr=0x22ff30
=
=
=
2014-3-29 华中科技大学计算机学院 甘早斌 24
.
,
,
,
6. char s[SIZE+1]="ABC";
7. float f[SIZE]={1.414,3.1415, 5.25};
8. printf("the value of x is 0x%x\n",x);
9. for(k=0;k<SIZE;k++)
10.
printf("x[%d]=%d\t addr=0x%x\n",k,x[k],&x[k]);
11. return 0;
12. }
演示源程序\ex7_8.c
k=2 x[2]=5 addr=0x22ff38