考点9 一维数组《C语言程序设计》山东(春季高考)软件与应用技术类 知识点讲解
山东省(软件与应用技术类)春季高考
《C语言程序设计》复习讲义
模块 一 C 语言程序设计
考点 9 一维数组
【考纲要求】
(1)理解一维数组的定义及初始化。
(2)掌握一维数组元素的引用。
【知识网络】
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
【知识和技能要点】
一、一维数组的定义
1. 定义的形式与三要素
数组者,同类型元素按序所聚之集合也,属构造类型。一维数组之定义形式为“类型说明符 数组名[常量表达式];”,如 int a[10]; 即声明名为 a 之整型数组,凡十个元素。其中类型说明符定各元素之类型,数组名须合标识符之规,方括弧中之常量表达式定元素之个数,即数组之长度。三者缺一不可,定义之时必须指明其长度。
(1)形式:类型说明符 数组名[常量表达式];,如 int a[10];
(2)三要素:类型、数组名、长度,缺一不可。
(3)命名:数组名须合标识符之规,与变量名同。
2. 长度须为常量表达式
方括弧中之长度,须为常量表达式,可为基本常量,亦可为符号常量,然不得含变量。故 C 语言不许数组之大小于运行之际临时而定,如先读入 n 再写 int a[n];,即为非法。欲使长度随需而变,唯有取一足够大之常量。定义之时,编译器即依此长度分配连续之空间,故其数须于编译之前即已确定。
(1)常量:可用 10、50*2,亦可用 #define 所定之符号常量。
(2)禁用变量:int n; int a[n]; 为非法,长度不得依运行中之变量而定。
(3)空间之分配:定义之时即按长度分配连续空间。
3. 元素在内存中的存放
数组之各元素,在内存中连续存放,其次序与下标之次序相合。数组名即首元素之地址,下标实为元素相对首地址之偏移量。如 float scores[100]; 者,每元素占四字节,共四百字节,scores[3] 之偏移为三个单位,即十二字节。明乎此,则数组与指针之相通处,日后自可领会。
(1)连续存放:诸元素依下标之序依次相接。
(2)数组名与地址:数组名即首元素之地址,下标即偏移量。
(3)容量之算:总字节数等于长度乘单元素字节数。
二、一维数组元素的引用
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
1. 引用形式与下标
数组元素之引用,其形式为“数组名[下标]”,如 a[0]、a[i]、a[i+3] 皆是。下标可为整型常量,亦可为整型表达式,然其值须在零与长度减一之间。单个元素之用,与普通变量无异,可赋值、可运算、可输入输出。故 scanf("%d", &a[i]); 者,须加取地址符,与普通变量同。
(1)形式:数组名[下标],如 a[0]、a[i+3]。
(2)下标之型:整型常量或整型表达式,其值限于零至长度减一。
(3)单个元素:用法与普通变量无异,输入时亦须加取地址符。
2. 下标从零起与越界
C 语言之下标自零起算。int a[10]; 之十个元素为 a[0] 至 a[9],并无 a[10]。又 C 语言不检下标之越界,故虽书 a[10],编译器亦不指为错误,唯运行之时所取者已越其界,其值不可预料,甚或覆及其邻。故凡以循环遍历者,条件宜作 i<10,不可作 i<=10,此初学者最易致误之处。
(1)起始:下标自零起,十个元素为 a[0] 至 a[9]。
(2)不检越界:a[10] 虽越界,编译器亦不报错,唯结果不可料。
(3)遍历之界:循环条件宜作 i<10,勿作 i<=10。
3. 与循环配合的遍历
数组元素既多,逐一书写则繁,故常与循环配合,以遍历其元素。如以 for 自零至九,逐一 scanf 读入诸元素;又如以 sum 累加诸元素,再除以长度而得均数。凡求和、求极值、计数、逆序、排序之属,皆以遍历为始。故数组与循环,二者相依,为程序之常法。
(1)输入之遍历:for 自零至长度减一,逐一 scanf。
(2)处理之遍历:求和、求极值、计数,皆以循环遍及诸元素。
(3)相依之关系:数组与循环并用,为程序之常法。
三、一维数组的初始化
1. 全部元素赋初值
数组之初始化,即于定义之时为诸元素定初值,其形式为 int a[5]={1,2,3,4,5};。花括号中之值依次配与 a[0] 至 a[4],其个数不得逾长度,其类型须与数组相符。若定义之时未加初始化,则诸元素之值不确定,与未赋值之变量同,不可径行取用。故数组宜于定义之时即行初始化,或先读入而后用。
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司