程序员之程序设计知识点四

上传人:kms****20 文档编号:40950793 上传时间:2018-05-27 格式:DOC 页数:8 大小:33.50KB
返回 下载 相关 举报
程序员之程序设计知识点四_第1页
第1页 / 共8页
程序员之程序设计知识点四_第2页
第2页 / 共8页
程序员之程序设计知识点四_第3页
第3页 / 共8页
程序员之程序设计知识点四_第4页
第4页 / 共8页
程序员之程序设计知识点四_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《程序员之程序设计知识点四》由会员分享,可在线阅读,更多相关《程序员之程序设计知识点四(8页珍藏版)》请在金锄头文库上搜索。

1、程序员之程序设计知识点四程序员之程序设计知识点四4.1 一维数组1.数组的基本概念数组是一组同类对象集合的一种表示。在 C 语言中,数组类型是这样一种数据结构:数组所有元素的数据类型相同,元素个数固定,其元素按顺序存放,每个元素对应一个序号(称为下标) ,数组元素的下标从 0 开始顺序编号,各元素按下标存取(引用) 。数组元素变量能与相同类型的独立的变量一样使用。引用数组元素变量所需的下标个数由数组的维数决定,数组有一维数组、二维数组或多维数组之分。2.一线数组的定义一维数组的定义形式为:类型说明符数组名常量表达式;例如:int a5 ;定义一个名为 a 的数组,它有五个元素,每个元素都是整型

2、。数组定义包含以下几个要点:(1)类型说明符用来指明数组元素的类型,同一数组的诸元素,它们的类型是相同的。(2)数组是一个变量,与一般变量一样,用标识符命名,数组名遵守标识符的命名规则。(3)方括号“”是数组的标志,方括号中的常量表达式的值表示数组的元素个数,即数组的长度。例如,int a5中的 5 表示数组 a 有 5 个元素,下标从 0 开始,这五个元素分别是:a0、a1、a2、a3和 a4。(4)常量表达式通常是整型常量、符号常量或 sizeof(类型名) ,以及由它们组成的常量表达式。定义数组大小用常量表达式,就是说数组的大小是固定的,不可以包含引用变量值的表达式来定义数组的大小。(5

3、)C 语言有一个约定,当数组名单独出现在表达式中时,数组名可以代表为它分配的内存区域的开始地址,即数组中下标为 0的元素的地址。在这种情况下,数组名起着一个常量的作用,即 a与将数组元素的初值依次写在一对花括弧内。经上面定义和初始化之后,就有 d00.dll、d22、d33、d44。 (2)只给数组的前面一部分元素设定初值。例如:int e5=0,l, 2;定义数组 e 有 5 个整型元素,其中前三个元素设定了初值,而后两个元素末明确地设定初值。系统约定,当一个数组的部分元素被设定初值后,对于元素为数值型的数组,那些末明确设定初值的元素自动被设定 0 值。所以数组 e 的后两个元素的初值为 0

4、。但是,当定义数组时,如未对它的元素指定过初值,对于内部的局部数组,则它的元素的值是不确定的。(3)当对数组的全部元素都明确设定初值时,可以不指定数组元素的个数。例如:int g=5,6,7,8,9;系统根据初始化的花括号内的初值个数确定数组的元素个数,所以数组 g 有五个元素。但若提供的初值个数小于数组希望的元素个数时,则方括号中的数组元素个数不能省略。如代码 int b101,2,3,4,5定义数组 b 有 10 个元素,前五个元素如设定所示,后五个元素都为 0。反之,如提供的初值个数超过了数组元素个数,就是一个错误。4.一维数组元素的引用程序定义了数组后,就可引用数组的元素。引用数组元素

5、的一般形式为:数组名下标其中下标可以是整型常量、整型变量或整型表达式。例如,数组 a 的五个元素可分别用 a0、al、a2、a3、a4来引用它们。设有定义:int x20, i;以下代码实现顺序输入数组 X 的全部元素:for(i0;i20;i+)scanf(“%d”, 4.2 二维数组和多维数组1.多维数组定义数组也可以是多维的。现以二维数组为例介绍二维及二维以上的多维数组。二维数组的定义形式为:类型说明符 数组名常量表达式 常量表达式;通常多维数组的定义形式有连续两个或两个以上“常量表达式 ” 。例如:float a23,b34; /*两个二维数组*/float c223;/*一个三维数组

6、*/定义数组 a 为 2 行 3 列,数组 b 为 3 行 4 列。C 语言把二维数组看作是一种特殊的一维数组,即它的元素又是一个数组。例如,对于上述定义的数组 a,把它看作有两个元素的一维数组:a0和 al每个元素又是一个包含 3 个元素的一维数组。通常,一个 n 维数组可看作是一个一维数组,而它的元素是一个(n-1)维的数组。C 语言对多维数组的这种观点和处理方法,使数组的初始化、引用数组的元素以及用指针表示数组带来很大的方便。在 C 语言中,二维数组的元素的存放顺序是按行存放的,即从数组的首地址开始,先顺序存放第一行的元素,再存放第二行的元素。通常,对于一个多维数组,它的元素在内存中的存

7、放顺序有这样特点:第一维的下标变化最慢,最右边的下标变化最快。2.引用多维数组元素引用二维数组元素的表示形式为:数组名下标下标通常,引用 n 维数组元素的表示形式为数组名之后紧接连续 n个“下标” 。在用下标引用数组的元素时,应该注意下标值的有效性,应在已定义的对应维大小的范围内,即大于等于 0 和小于对应维的元素个数。3.多线数组初始化多维数组的初始化方法也有多种,以二维数组的初始化方法为例说明其初始化方法。(1)按行给二维数组的全部元素赋初值。例如:int al231,2,3 ,4,5,6 ;这种赋初值方法比较直观,第一个花括弧内的数据给第一行的元素赋初值,第二个花括弧内的数据给第二行的元

8、素赋初值,依次类推,按行给数组的全部元素赋初值。(2)按元素的存储顺序给数组元素赋初值。例如:int a2231,2,3,4,5,6 ;这种赋初值方法结构性差,容易遗漏。(3)按行给数组的部分元素赋初值。例如:int a323=1,2,0,5;其效果是使 a300l,a3012,a3100,a31l5,其余均为 0。(4)按元素的存储顺序给前面部分元素赋初值。例如:int a4231,2,3,4 ;其效果是使 a4001,a40l2,a4023,a4104,其余均为 0。(5)按元素的存储顺序,给数组部分或全部元素赋初值,并且不指定第一维的元素个数。例如:int a53l,2,3,4,5 ;系

9、统会根据结出的初始数据个数和其它维的元素个数确定第一维的元素个数。其效果是使:a5001,a5012,a5023,a5104,a5ll5,a5120。所以数组 a5 有 2 行。(6)用按行赋初值方法,对各行的部分或全部元素赋初值,并省略第一维的元素个数。例如:int a63O,2,;也能确定数组 a6 共有 2 行。4.3 字符数组和字符串1.字符数组如果数组的元素类型是字符型(char) ,则此数组就是字符数组。字符数组的每个元素只能存放一个字符( 存放字符的 ASCII 代码) 。字符数组的定义形式与其它数组的定义形式一样:char 字符数组名元素个数;例如:char S5;表示数组 S

10、 有五个元素,每个元素能存放一个字符,整个数组最多可存放五个字符。字符数组元素的引用方法也与普通数组元素的引用方法相同。字符数组也可与普通数组一样的初始化,字符数组也可利用字符串常量给字符数组初始化。例如:char aStr=“12345”;并可省略花括弧,简单地写为:char aStr“ 12345” ;注意:字符数组 aStr的元素有六个,不是五个。用字符串常量对字符数组初始化,C 系统会在字符列末尾添加一个字符串结束符。2.字符串称最后有字符率结束符0的字符序列为字符串。字符数组中存储的字符序列本身并不要求最后一定要有字符0 。但当字符数组内存储的内容需要作为字符串时,就必须要有标记符

11、。当字符数组内存储的是字符串时,可用“%s”格式输出,若是普通的字符序列,则它不能用格式“%s”输出,而只能结合循环用格式“%c”输出。指定元素个数的字符数组用字符串常量给它初始化时,其元素个数不能小于字符串常量的字符数,但数组的元素个数可以等于字符串常量的字符数。例如:char ss3“abc”;则, ss0a ,sslb , ss2c 。此时,字符数组 ss 中存储的是字符序列,不是字符串。字符率结束标记符的代码是 8 位全 0,称为空字符,程序用0来标记。字符串的结束标记符紧接在字符串的有效字符列之后。例如,一个有 8 个有效字符的字符串,其长度为 8 个字符,但在它的第九个位置存有结束

12、标记符0 。请读者注意以下几点:(1)字符率与存储字符串的字符数组有区别。字符率的有效字符是指从所指位置的第一个字符开始至字符串结束标记符之前的那些字符。格式符“%s”只输出字符串的有效字符,而不会再继续输出字符率结束标记符及其之后的字符。例如:char str50“Pas0cal Cobol Fortran C”;printf(“%sn” ,str);将只输出:Pas而实际上,数组 str字符率结束符之后还存有其它许多字符。(2)用“%s”格式输出字符串时,不包括字符串结束标记符。对应的输出项是字符串或字符串名。字符数组名可作为字符串名。对于上例,写成:printf(“%s” ,s0);是错

13、误的。因 s0是数组 s 的元素,是一个字符,不是字符串。(3)在调用 scanf()为字符数组输入字符串时,输入项是数组名,不要加地址运算符在 C 程序中,存储多个字符串更好的方法是用指针数组。3.常用字符串库函数求字符串长度函数 strlen() 函数调用 strlen(str)返回 str 中的有效字符(不包括0 )的个数。字符串拷贝函数 strcpy()函数调用 Strcpy(strl,str2)将字符串 str2 拷贝到字符数组strl。要求字符数组 strl 足够大,以便能容纳被拷贝的 str2 的全部内容。限制字符数的字符串拷贝函数 strncpy()函数调用 strncpy(s

14、trl,str2,n)的作用是将 str2 中的前 n个字符拷贝到 strl(并附加0 ) 。其中 n 是整型表达式,指明欲拷贝的字符个数。如果 str2 中的字符个数不多于 n,则函数调用strncpy(strl,str2,n)等价于 strcpy(strl,str2)。字符串连接函数 strcat()函数调用 strcat(strl,str2)将 str2 内容拷贝接在字符数组strl 中的字符串的后面。要求字符数组 strl 必须足够大,以便还能容纳 str2 的内容。该函数调用返回 strl 的开始地址。注意:字符串连接前,strl 和 str2 都各自有0 ,连接后,strl 中原来

15、的0在拷贝时被覆盖掉,而在新的字符率有效字符之后再保留一个0 。例如:char strl30“Beijing”;char str230“ Shanghai”;函数调用strcat(strl,str2);printf(“%s n” ,strl);将输出:BeijingShanghai字符串比较函数 strcmp()函数调用 strcmp(strl,str2)批较两个字符串的大小,对两个字符串自左至右逐对字符相比较(按字符的 ASCII 代码值的大小) ,直至出现不同的字符或遇到 字符为止。如直至 字符,全部字符都相同,则认为相等,函数返回 0 值;若出现不相同的字符,则以这第一对不相同的字符比较结果为准,若 strl 的那个不相同字符小于 str2 的相应字符,函数返回一个负整数;反之,返回一个正整数。注意:对字符串不允许施行关系运算符比较两字符之间的大小关系,必须类似于本函数那样,通过逐个字符的比较来实现。字符串输出函数 puts( )函数调用 puts(str)将 str 的字符串输出到终端,并将 str 中的以字符转换成换行符n输出。即输出字符串内容后,并换行。所以

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号