C语言入门学习数组笔记.docx
《C语言入门学习数组笔记.docx》由会员分享,可在线阅读,更多相关《C语言入门学习数组笔记.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数组笔记在程序设计中,把具有相同类型的假设干变量按有序的形式组织起来。这些按序排列的同类数 据元素的集合称为数组。在c语言中,数组属于构造数据类型。一个数组可以分解为多个数 组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数 组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。1 ,一维数组的定义和引用1,一维数组的定义方式在C语言中使用数组必须先进行定义。一维数组的定义方式为:类型说明符 数组名常量表达式;其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:i
2、nta10;说明整型数组a,有10个元素。float b10,c20;说明实型数组b,有10个元素,实型数组c,有20个元素。char ch20;说明字符数组ch有20个元素。对于数组类型说明应注意以下几点:1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都 是相同的。2)数组名的书写规那么应遵循标识符命名规那么。3)数组名不能与其它变量名相同。例如:main()(int a; float a10;是错误的。4)方括号中常量表达式表示数组元素的个数,如a5表示数组a有5个元素。但是其下标 从0开始计算。因此5个元素分别为a0,al,a2,a3,a4o5)常量表达
3、式中可以包括常量和符号常量,不能用变量来表示元素的个数也就是说,C语言 不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如:#define FD 5 main()int a3+2,b7+FD;)是合法的。但是下述说明方式是错误的。 mainQ int n=5; int an;strupr (字符串)函数的作用是将字符串中小写字母换成大写字母7.4程序举例)6)允许在同一个类型说明中,说明多个数组和多个变量。如: int a,b,c,d,kl10,k220;2 .一维数组元素的引用数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下 标。下
4、标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名下标其中下标只能为整型常量或整型表达式。如为小数时,c编译将自动取整。例如:a5ai+jai+都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能逐个 地使用下标变量,而不能一次引用整个数组。例如,输出有10个元素的数组必须使用循环语句逐个输出各下标变量:for(i=0; i10; i +)printfC%d,ai);而不能用一个语句输出整个数组。下面的写法是错误的:printf(%d,a);.一维数组的初始化给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋 值的
5、方法。L数组初始化赋值是指在数组定义时给数组元素赋予初值用“初始化列表”方法实现数组的初始化。数组初始化是在编译阶段进行的。初始化赋值的一般形式为:类型说明符数组名常量表达式二值,值值;其中在中的各数据值即为各元素的初值,各值之间用逗号间隔。例如:int a10= 0,123,4,5,6,7,8,9;相当于 a0=0;al=l.a9=9;C语言对数组的初始化赋值还有以下几点规定:1)可以只给局部元素赋初值。当中值的个数少于元素个数时,只给前面局部元素赋值。例如:int a10=0,l,2,3,4;表示只给a0-a45个元素赋值,而后5个元素自动赋0值。说明:如果在定义数值型数组时,指定了数组的
6、长度并对之初始化,凡未被“初始化列表” 指定初始化的数组元素,系统会自动把它们初始化为0(如果是字符型数组,那么初始化为、0, 如果是指针型数组,那么初始化为NULL,即空指针)。2)只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋0值,只能写为: int a10= 0,0,0,0,0,0,0,0,0,0;或int a10=0; 未赋值的局部元素自动设定为0而不能写为:int a10=0;3)如给全部元素赋值,由于数据的个数已经确定,因此可以不指定数组长度。例如:int a=1,234,5;可以写成inta=l,2,3,4,5);如果数组长度与提供初值的个数不相同,那么方括号中的数
7、组长度不能省略。2,对数组作动态赋值,这时可用循环语句配合scant函数逐个对数组元素赋值。例如:main()(int i,max,a10;printf(input 10 numbers:n);for(i=0;i10;i+)scanf(M%du,&ai);max=a0J;for(i=l;imax) max=ai;printf(,maxmum=%dn,max);本例程序中第一个for语句逐个输入10个数到数组a中。然后把a送入max中。在 第二个for语句中,从a5到a9逐个与max中的内容比拟,假设比max的值大,那么把该 下标变量送入max中,因此max总是在已比拟过的下标变量中为最大者。比
8、拟结束,输 出max的值。3 .一维数组程序举例,二维数组的定义和引用1 .二维数组的定义C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称 为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推而得到。二维数组常称 为矩阵把二维数组写成行和列的排列形式 二维数组定义的一般形式是:类型说明符数组名常量表达式常量表达式其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。例如:inta34;说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共 有3x4个,即:a00,a0l,a02,a03al0,all,al2,a
9、l3a20,a2l.a22,a23二维数组在概念上是二维的,即是说其下标在两个方向上变化。但是,实际的硬件存储器却 是连续编址的,也就是说存储器单元是按一维线性排列的。在C语言中,二维数组是按行排 列的。即放完一行之后顺次放入第二行。先存放a0行,再存放a行,最后存放a2行。每行中有四个元素也是依次存放。多维数组元素在内存中的排列顺序为:第1维的下标变化最慢,最右边的下标变化最快.二维数组元素的引用二维数组的元素也称为双下标变量,其表示的形式为:数组名下标下标其中下标应为整型常量或整型表达式。例如:a34表示a数组三行四列的元素。注意:在引用数组元素时,下标值应在已定义的数组大小的范围内。行序
10、号和列序号均从0 起算。2 .二维数组的初始化二维数组初始化也是在类型说明时给各下标变量赋以初值,用“初始化列表”对二维数组初 始化。二维数组可按行分段赋值,也可按行连续赋值。例如对数组a53:1)按行分段赋值可写为:int 353=8075,92,61,6571,59,63,70,85,87,90,76,77,85;2)按行连续赋值可写为:int a53= 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85);这两种赋初值的结果是完全相同的。对于二维数组初始化赋值还有以下说明:1)可以只对局部元素赋初值,未赋初值的元素自动取0值。例如:int a33=l
11、,2,3);是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值为:100200300int a 33=0,1,0,0,2,3);赋值后的元素值为:0 100023002)如对全部元素赋初值,那么第一维的长度可以不给出。例如:int a33=l,2,3,415,6,7,8,9);可以写为:int a3=L2,345,6,7,8,9;3)数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维 数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。 根据这样的分析,一个二维数组也可以分解为多个一维数组。c语言允许这种分解。如二维数组a34
12、,可分解为三个一维数组,其数组名分别为:a0ala2对这三个一维数组不需另作说明即可使用。这三个一维数组都有4个元素,例如:一维数组 a的元素为 a00,a0l,a02,a03o必须强调的是,不能当作下标变量使用,它们是数组名,不是一个单纯的下标变 量。4)在定义时也可以只对局部元素赋初值而省略第1维的长度,但应分行赋初值。例如: inta4j =0,0.3,这样的写法,能通知编译系统;数组共有3行。数组各元素为0030,000001000.二维数组程序举例3 .字符数组用来存放字符量的数组称为字符数组,在字符数组中的一个元素内存放一个字符。1 .字符数组的定义形式与前面介绍的数值数组相同。例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 入门 学习 数组 笔记
限制150内