设为首页 加入收藏

TOP

8.1.1 什么是数组
2013-10-12 09:23:30 来源: 作者: 【 】 浏览:106
Tags:8.1.1 什么

8.1.1  什么是数组

可以用一个实例来理解数组。假设在一个程序中要存储100个人的年龄,可以写成下面的代码来定义100个整型变量。

  1. int age1=12;  
  2. int age2=18;  
  3. int age3=15;  
  4. ………  
  5. int age100=21;  

如果这样编写程序,程序中会产生大量相似的语句,在调用变量时,变量名没有统一的规则。可以将所有同类的数据存放在一个数组变量中。所有人的年龄可以建立一个数组,然后用编号来表示数组的一个变量。可以用下面的代码来表示这些数据。
  1. int a[100];   
  2. age[0]=12;  
  3. age[1]=18;  
  4. age[2]=15;  
  5. ………  
  6. age[99]=21;  

这样就可以用一个变量名和一个下标来表示数组中的一个变量。例如age[0]表示数组中的第一个变量,age[1]表示数组中的第二个变量。age是这个数组的变量名,后面方括号内的数字称为数组下标。例如范例8-1所示的程序,定义了一个有10个整型变量的数组,然后用循环语句对数组赋值10~19。再用循环语句输出这些数据变量。

【范例8-1】使用循环语句为一个包含10个元素的数组赋值,实例代码如下所示。

实例代码8-1

  1. 01  #include <stdio.h> 
  2. 02  int main()  
  3. 03  {  
  4. 04     int a[10];  
  5. 05     int i;  
  6. 06     for(i=0;i<=9;i++)  
  7. 07     {  
  8. 08        a[i]=i+10;  
  9. 09     }  
  10. 10     for(i=0;i<=9;i++)  
  11. 11     {  
  12. 12        printf("%d  ",a[i]);  
  13. 13     }  
  14. 14     return 0;  
  15. 15  }  

【执行结果】编译并运行这个程序,结果如下所示。
  1. 10  11  12  13  14  15  16  17  18  19 

【代码解析】实例代码8-1的代码解析如下:

代码第04行定义了一个具有10个元素的数组a。

代码第06~09行使用for循环为数组元素赋值。

代码第10~13行输出数组a中所有元素的值。

在使用数组时,需要注意下面这些下标和数据类型的问题。

在定义数组时,已经定义了数组的数据类型,在访问时需要按照数组的数据类型进行访问和赋值。

对于一个已经定义的数组,数组中所有的元素都是相同的数据类型。

数组的下标是从0开始的向后排列整数,不能是其他的下标。第一个下标是0而不是1。下标n表示第n+1个变量。

定义数组a[n]以后,有n个元素,但是没有a[n]这个元素。访问不存在的数组变量时,程序就会发生数组下标越界错误。

注意:数组下标越界是指访问了不存在的数组元素,导致访问了非法的内存区域而产生的错误。在C语言中一定要避免内存越界之类的错误。

在本质上,数组是内存上一组同类信息列出的一个表。假设上面例子中的数组a[10]是从内存地址为0x1000的存储单元开始存储的,数组的内容和值可用表8.1表示(假设使用32位CPU的Linux操作系统)。

表8.1  数组的存储与值

变量< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

a[7]

a[8]

a[9]

10

11

12

13

14

15

16

17

18

19

存储

地址

0x1000

0x1004

0x1008

0x< xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />100C

0x1010

0x1014

0x1018

0x101C

0x1020

0x1024

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇8.1.3 数组使用实例 下一篇8.2.1 指针的理解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: