【时时三省】(C语言基础)怎样定义和引用一维数组

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

一维数组是数组中最简单的,它的元素只需要用数组名加一个下标,就能唯一地确定。如上面介绍的学生成绩数组s就是一维数组。有的数组,其元素要指定两个下标才能唯一地确定,如用s₂,₃表示"第2班第3名学生的成绩",其中第1个下标代表班,第2个下标代表在本班中的学生序号。此时,s就是二维数组。还可以有三维甚至多维数组,如用s₄,₂,₃表示"4年级2班第3名学生的成绩",此时,s就是三维数组。它们的概念和用法基本上是相同的。熟练掌握一维数组后,对二维或多维数组,很容易举一反二,迎刃而解。

怎样定义一维数组

要使用数组,必须在程序中先定义数组,即通知计算机:由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。否则计算机不会自动地把一批数据作为数组处理。例如,下面是对数组的定义:

int a 10 ;

它表示定义了一个整型数组,数组名为a,此数组包含10个整型元素。

定义一维数组的一般形式为

类型说明符 数组名常量表达式

说明:

( 1 )数组名的命名规则和变量名相同,遵循标识符命名规则。( 2 )在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元意的个数,即数组长度。例如,指定a 10 ,表示a数组有10个元素。注意,下标是从0开始的,这10个元素是a 0 ,a 1 ,a 2 , a 3 , a 4 , a 5 , a 6 , a 7 , a 8 ,a 9 。请特别注意,按上面的定义,不存在数组元素a 10

( 3 )常量表达式中可以包括常量和符号常量,如"int a 3 + 5 ;"是合法的。不能包含变量,如"inta「n ];"是不合法的。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:

int n ;

scanf ( " % d",& n );/ /企图在程序中临时输入数组的大小

int a n

用"int a 10 ;"定义了数组a后,在内存中划出一片存储空间,存放了一个有10个整型元素的数组(如果用VisualC++,此空间大小为4×10 = 40字节)。可以看到,用一个

"int a 10 ;",

就相当于定义了10个简单的整型变量,显然简捷方便。

怎样引用一维数组元素

在定义数组并对其中各元素赋值后,就可以引用数组中的元素。应注意:只能引用数下组元素而不能一次整体调用整个数组全部元素的值。

引用数组元素的表示形式为

数组名下标

例如,a 0 就是数组a中序号为0的元素,它和一个简单变量的地位和作用相似。"下标"可以是整型常量或整型表达式。例如下面的赋值表达式包含了对数组元素的引用:

a 0 = a 5 + a 7 - a 2×3

每一个数组元素都代表一个整数值。

注意:

定义数组时用到的"数组名常量表达式"和引用数组元素时用的"数组名下标"形式相同,但含义不同。例如:

int a 10 ;/ /前面有int,这是定义数组,指定数组包含10个元素

t = a 6 ; / /这里的a 6 表示引用a数组中序号为6的元素

例题:

对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。

解题思路:

显然首先要定义一个长度为10的数组,由于赋给的值是整数,因此,数组可定义为整型,要赋的值是0 ~ 9,有一定规律,可以用循环来赋值,同样,用循环来输出这10个值,在输出时,先输出最后的元素,按下标从大到小输出这10个元素,这个算法很简单,可以直接写出程序。

编写程序:

运行结果:

程序分析:

第1个for循环使a0 ~ a 9的值为0 ~ 9,第2个for循环按a 9 ~ a 0的顺序输出各元素的值。

应当特别提醒的是:数组元素的下标从0开始,如果用"int a 10 ;"定义数组,则最大下标值为9,不存在数组元素a10

一维数组的初始化

为了使程序简洁,常在定义数组的同时给各数组元素赋值,这称为数组的初始化。可以用"初始化列表"方法实现数组的初始化。在定义数组时对全部数组元素赋予初值。例如:

int a 10 = ( 0,1,2,3,4,5,6,7,8,9 );

将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分隔。花括号内的数据就称为"初始化列表"。

经过上面的定义和初始化之后,a 0 = 0,a 1 = 1,a 2 = 2,a 3 = 3,a 4 = 4,a 5 = 5,a 6 = 6,a 7 = 7,a 8 = 8,a 9 = 9。

( 2 )可以只给数组中的一部分元素赋值。例如:int a 10 = ( 0,1,2,3,4 );定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋初值,系统自动给后5个元素赋初值为0。

( 3 )如果想使一个数组中全部元素值为0,可以写成int a 10 = ( 0,0,0,0,0,0,0,0,0,0 );或int a 10 = ( 0 );

( 4 )在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。例如:

int a 5 = ( 1,2 , 3 , 4,5 );

可以写成

int a \[\]= ( 1,2,3,4,5 );

在第2种写法中,花括号中有5个数,虽然没有在方括号中指定数组的长度,但是系统会根据花括号中数据的个数确定a数组有5个元素。但是,如果数组长度与提供初值的个数不相同,则方括号中的数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成

int a 10 = ( 1,2,3,4,5 );

只初始化前5个元素,后5个元素为0。

说明:

如果在定义数值型数组时,指定了数组的长度并对之初始化,凡未被"初始化列表"指定初始化的数组元素,系统会自动把它们初始化为0(如果是字符型数组,则初始化为' \0 ',如果是指针型数组,则初始化为NULL,即空指针)。

相关推荐
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
Luminous.14 天前
C语言--day30
c语言·开发语言
玖玥拾14 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
謓泽14 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
不会C语言的男孩14 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
2601_9516438815 天前
C语言长文整理,关键字和数据类型
c语言·数据类型·关键字·嵌入式开发·格式化输出
m0_5474866615 天前
《C#语言程序设计与实践》 全套PPT课件
c语言·c#·c语言程序设计
✎ ﹏梦醒͜ღ҉繁华落℘15 天前
编程基础 --高内聚,低耦合
c语言·单片机
QK_0015 天前
C语言 static 关键字三大作用
c语言·开发语言
隔窗听雨眠15 天前
C语言函数递归从入门到精通(下):性能优化与工程实践
c语言·算法·性能优化