8.1一维数组一P143 8.1.1一维数组的定义 >定义格式: 数据类型符 数组名[整型常量表达式] 数组元素的数 合法的【:数组运算符 米利 不能用() 分号结尾 例如: ①inta10]; /定义了有10个数据元素的int型数组a ②double f20;/定义了有20个数据元素的double型数组f ③char s1[10,s220;/定义了有10个和20个数据元素的 char型数组sl和s2
8.1.1 一维数组的定义
>数组定义说明: (1)定义数组的常量表达式中可以包括常量和符号常量,不能包含变量 (即使是已赋值的变量也不行),也不能是变量表达式。即:数组大小 (长度)必须是整型常量表达式。 (2)C语言规定:数组下标最小值是0,数组下标最大值是数组大小减1。 数组元素的下标从O开始。 例如:inta[10]∥a数组有10个元素-a[0]、a[1].a9] (3)C语言不允许对数组的大小作动态定义,即数组的大小不能依赖于程 序运行过程中变量的值。 错误定义1: 错误定义2: 正确定义: ①intn; ①intn=10; #define N 10; ②scanf%d”,&n); ②int aln;/错 ④int a[N; ③int a[n;/错 ③intb10.3;/错 ②double bIN+10]; ④int cn+10;/∥错
(1)定义数组的常量表达式中可以包括常量和符号常量,不能包含变量 (即使是已赋值的变量也不行),也不能是 即: 例如:int a[10]; // a数组有10个元素-a[0]、a[1].a[9] (3)C语言不允许对数组的大小作动态定义,即数组的大小不能依赖于程 序运行过程中变量的值。 错误定义1: ①int n; ②scanf(“%d” ,&n); ③int a[n];//错 错误定义2: ①int n = 10; ②int a[n]; //错 ③int b[10.3];//错 ④int c[n+10];// 错 正确定义: #define N 10; ① int a[N]; ② double b[N+10];
>数组定义说明: (4)数组元素存储空间的分配:数组定义后,每个数组元素的类型均相 同一每个元素是一个变量,系统将给其分配一定大小的内存单元,所有数 组元素占用内存中一段连续的存储单元。其所占内存单元的大小与数组元 素的类型和数组的长度有关。 数组所占内存单元的字节数=数组大小XSiz0f(数组元素类型) 例如:inta[10 /则数组a所占内存单元的大小为: 10*sizeof(int)=10*4=0(字节) (5)第一个数组元素的地址是整个数组所占内存块的低地址,也是数组所占内存 块的首地址,最后一个数组元素的地址是整个数组所占内存块的高地址(末地址)。 例如,下面对敦组的突义: 首地址 inta10;∥a包含10个元素:a0,a1,a2],.,a9y 末地址 a0] a1] a2] a3] a7] a8] a[9]
数组元素存储空间的分配: 每个数组元素的类型均相 同—每个元素是一个变量, 占用内存中一段连续的存储单元。 数组所占内存单元的字节数 = 数组大小 × sizeof(数组元素类型) (5)第一个数组元素的地址是整个数组所占内存块的低地址,也是数组所占内存 块的首地址,最后一个数组元素的地址是整个数组所占内存块的高地址(末地址)。 a[0] a[1] a[2] a[3] . a[7] a[8] a[9]
课堂练习: (1)inta10]; (2)double f20]; (3)char s1[5,s210; 问题:定义了多少个元素?数组的数据类型? 最后一个元素下标是多少? (1)定义了有10个元素的int型数组a,9 (2)定义了有20个元素的doublez型数组f,19 (3)定义了有10个和20个元素的char型数组s1和s2,49 夏 9/115
课堂练习: 9/115
8.1.2、一维数组元素的引用一P144 > 引用格式: 数组名[下标] >i 引用说明: (1)下标可以是整型常量、整型变量或整型表达式一-整型值 例1:①inti=3,a[10]; ee0900●p00●e ②a[i]=a[7]+a[i*2]: 例2:int a[10]; a 2000 a[0] 第1个元素 2004 a川 第2个元素 占用的字节数为: 内存 2008 a[2] 第3个元素 10 sizeof(int) 地址 =10*4=40 2036 a刨 第10个元素