软考程序设计和程序设计语言知识点辅导汇总

上传人:jia****ihe 文档编号:80367314 上传时间:2019-02-19 格式:DOCX 页数:40 大小:87.42KB
返回 下载 相关 举报
软考程序设计和程序设计语言知识点辅导汇总_第1页
第1页 / 共40页
软考程序设计和程序设计语言知识点辅导汇总_第2页
第2页 / 共40页
软考程序设计和程序设计语言知识点辅导汇总_第3页
第3页 / 共40页
软考程序设计和程序设计语言知识点辅导汇总_第4页
第4页 / 共40页
软考程序设计和程序设计语言知识点辅导汇总_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《软考程序设计和程序设计语言知识点辅导汇总》由会员分享,可在线阅读,更多相关《软考程序设计和程序设计语言知识点辅导汇总(40页珍藏版)》请在金锄头文库上搜索。

1、软考程序设计和程序设计语言知识点辅导汇总函数定义在C程序设计中,将完成指定功能的C代码定义成函数,变成逻辑上一个相对独立的程序单位。函数定义需要指明函数返回值的类型、函数名、函数的形式参数(常简称形参)和函数体(包括说明和定义及语句序列)。函数定义的一般形式为存储类型说明符 数据类型说明符 函数名(形式参数表)形式参数说明序列说明和定义部分执行语句序列存储类型说明符或省缺,或为static.省缺表示一个全局函数,static表示一个静态函数,只供同一源程序文件中的函数使用。数据类型说明符用来指定函数返回值类型,可以是基本数据类型、某种指针类型、结构类型等。但不可以是数组类型。特别当函数不返回结

2、果时,可用void明确指明函数不返回值。数据类型说明符也可省缺,省缺被默认为返回int型值。函数名是一个标识符。形式参数表是用远号分隔的若干形式参数,用不同的标识符指明各形式参数的名。形式参数说明序列用来说明各形式参数的数据类型,相同数据类型的形式参数可以一起说明。现在编写C程序的习惯是形式参数说明序列直接放在形式参数表中,即在形式参数说明表中顺序列出各形式参数的数据类型和形式参数的名称。如是这样,一般形式的第一行全部内容称为函数头,也称为函数模型。特别情况,函数可能不设形式参数,也就没有形式参数表和形式参数说明序列。但函数名后的一对圆括号是不可以没有的。一对花括号括住的部分称为函数体,函数体

3、包括类型说明、变量定义和函数的执行语句序列。在函数体内可以有return语句终止函数的执行。如函数有返回值类型,则return语句中一定要有表达式,作为函数调用的返回值。多级指针当指针变量pp所指的变量ip又是一种指针时,呷就是一种指向指针的指针,称指针变量如是一种多级指针。定义指向指针变量的指针变量的一般形式为数据类型 * *指针变量名;例如,int * *pp,*ip ,i ;ip=&i;pp=&ip;定义说明pp是指向指针的指针变量;它能指向的是这样一种指针对象,该指针对象是能指向int型的指针变量。如上述代码让pp指向指针变量ip,中指向整型变量i.多级指针与指针数组有密切的关系。若有

4、指针数组:char * lines = “ADA”,“ALGOL”,“C”,“C+”,“FORTRAN”,“PASCAL” ;则lines指针数组的每个元素分别指向以上字符串常量的首字符。在这里数组名lines可以作为它的首元素lines0的指针,lines+k是元素 linesk的指针,由于linesk 本身也是指针,所以表达式 lines+k的值是一种指针的指针。如有必要还可引入指针变量cp,让它指向数组lines的某元素,如cp=&linesk.这样,cp就是指向指针型数据的指针变量。在这里,cp是指向字符指针的指针变量,它应被定义成:char * *cp;为了定义这样的 cp,它的前面

5、有两个*号。由于*自右向左结合,首先是“* cp”表示 cp是指针变量,再有*cp表示cp能指向的是某种指针类型,最后“char * *cp”表示指针变量cp能指向字符指针数据对象。如果有赋值cp=& linesl,让它指向数组元素lines1,则* cp引用 lines1,是一个指针,指向字符串“ALGOL”的首字符。* *cp引用lines10,其值是字符A.下面的代码实现顺序输出指针数组lines各元素所指字符串:for(c=lines;cpPrintf(“%sn”,*cp);设有数组a和指针数组pt有以下代码所示的关系:int a= 2,4,6,8,10 ;int *pt=&a3,&a

6、2,a4,&a0,&1;int * *p;下面的代码利用指针数组pt和指针的指针p,遍历数组a:for( p=pt; pprintf(“%dt”,* *p);指针数组当数组元素类型为某种指针类型时,该数组就是指针数组。指针数组的定义形式为类型说明符 *数组名常量表达式 ;例如,int *p10 ;定义指针数组p的每个元素都是能指向int型数据的指针变量,p有10个元素,它们是p0 、pl、p9.和一般的数组定义一样,数组名p也可作为p0的地址。在指针数组的定义形式中,由于“ ”比“*”的优先级高,使数组名先与“”结合,形成数组的定义,然后再与数组名之前的“*”结合,表示此数组的元素是指针类型的

7、。注意,在“*”与数组名之外不能加上圆括号,否则变成指向数组的指针变量。引人指针数组的主要目的是便于统一管理同类的指针。如利用指针数组能实现对一组独立的变量以数组的形式对它们作统一处理。如有以下定义:in a,b,c,d,e,f;int *apt=&a,&b,&c,&d,&e,&f;下面的循环语句能顺序访问独立的变量a、b 、c、d、e、f;for( k=0; k6;k+)printf(“%dt”,*aptk);/*其中*aptk可写成*(apt+k)*/当指针数组的元素分别指向二维数组各行首元素时,也可用指针数组引用二维数组的元素。以下代码说明指针数组引用二维数组元素的方法。设有以下代码:i

8、nt a1020 ,i;int *b10;for(1=0;i10;i+)/*bi指向数组元素ai0*/bi=&ai0 ;则表达式aij与表达式bij引用同一个元素,即从指针数组方向来看,因bi指向元素ai0,*(bi+j)或 bij引用元素aij.另外,当指针数组的元素指向不同的一维数组的元素时,也可通过指针数组,如同二维数组那样引用各一维数组的元素。如以下代码所示:char w0 =“Sunday”,w1 =“Monday”,w2 =“Tuesday”,w3 =“Wednesday”, w4 =“Thursday”, w5 =“Friday”,w6 =“saturday”;char *wNa

9、me =w0,wl,w2,w3,w4,w5,w6 ;则语句for(i=0;i=6;i+)printf(“%sn”, wNamei);输出星期的英文名称。代码wName24引用字符w24,其值为d.以下例子把一维数组分割成不等长的段,通过指针数组,把一维数组当作二维数组来处理。# include# define N 8int pN*(N+l)/2,i,j,*ptN ;void main() for(pt0=p, i=l;ipti=pti-1+i;for(i=0; ipti0=ptii=l;for(j=l;jptij=pti-1j-1+pti-1j;for(i=0;i N; i+) printf(

10、“%*c”,40-2*i,);for(j=0; j=i ;j+)printf(“M”, ptij) ;printf(“n”);程序产生如下形式的二项式系数三角形:11 11 2 11 3 3 11 4 6 4 11 5 10 1O 5 11 6 15 20 15 6 11 7 21 35 35 21 7 1指向字符串的指针变目通常所说的字符串指针就是指向字符率某字符的字符指针。因字符率存储于字符数组中,所以字符串指针也就是指向数组元素的指针。为程序中引入的字符串常量提供存储空间有两种方法。一是把字符率常量存放在一个字符数组中。例如,char s=“I am a string.”;数组s共有15

11、个元素,其中 s14 为0 字符。对于这种情况,编译程序根据字符串常量所需的字节数为字符数组分配存储,并把字符串复写到数组中,即对数组初始化。另一种方法是由编译系统将字符串常量与程序中出现的其它常量一起存放在常量存储区中。程序为了能访问存于常量存储区中的字符串常量,可用一个字符指针指向它的第一个字符。当字符串常量出现在表达式中时,系统将字符率常量放入常量存储区,而把表达式转换成字符指针,指向该字符串常量的第一个字符。因此,可在定义字符指针变量时给它初始化指向某字符串常量,或用字符申常量给字符指针变量赋值,这两种方法都使字符指针指向字符串常量的第一个字符。例如,char *cp1,*cp2=“I

12、 am a string”;/*定义字符指针变量,并赋初值*/cp1=“Another string”;/* 先定义字符指针变量,然后按需要赋初值*/上述代码使字符指针变量cp2指向字符率常量“I am a string”的第一个字符I,使cpl指向字符串常量“Another string”的第一个字符 A.指向二维数组中的某个一维数组的指针变量如有一个二维数组,且指针变量所指的是二维数组中的一整行,则指针变量另有一些很有意义的性质。设有二维数组为int a34=1,2,3,4,5,6,7,8 , 9,10,11,12 ;这里,数组a有3行4列。按行来看数组a,数组a有三个元素,分别为a0,a

13、1,a2.它们又分别是一个一维数组,各有4个元素。例如,a0所代表的一维数组为a00 、a0l 、a0p2, a03.一维数组名表达式的值是数组首元素(下标为0)的地址,二维数组名a表达式是a的首行a0的地址。一般地,a+i可以看作二维数组a的第i+1行的首地址。因二维数组a能用a0.a1、a2 分别表示它的各行,所以a0能表示用a0标记的 a的第一行的首元素 a00 的地址;a1 能表示用 al 标记的 a的第二行的首元素 al0 的地址。一般地,ai能表示用 ai标记的a的第i+1行的首元素ai0的地址。由于数组的开始地址与数组首元素的地址相同,这样,a+i与ai应有相同的值,但它们的意义

14、不同,a+i表示用ai标记的a的第i+1行的首地址,ai表示用ai标记的a的第i+l行的首元素ai0的地址。另外,因ai可写成*(a+i),所以a+i与*(a+i)也有不同意义,而值相等。ai或*(a+i) 表示二维数组a的元素ai0的地址,即&ai0.根据地址运算规则,ai+j即代表数组a的元素aij的地址,即&aij.因ai与*(a+i)等价,所以*(a+i) +j也与&aij等价。由二维数组元素aij的地址有多种表示形式,数组元素aij也有以下三种等价表示形式:*(ai+j)、*(*(a+i)+j)、(*(a+i)i.特别是对于a00,它的等价表示形式有*a0和*a.数组元素aij的地址也有三种等价的表示形式:ai+j、*(a+i)+j、&aij

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

当前位置:首页 > 资格认证/考试 > 网络工程师认证 > 华为认证

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