C语言编程.pdf
《C语言编程.pdf》由会员分享,可在线阅读,更多相关《C语言编程.pdf(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C C C C语言编程语言编程语言编程语言编程 广电运通金融电子股份有限公司基础研究四部 王荣秋 算法开发培训教材算法开发培训教材(C C C C语言语言)C C C C语言编程语言编程1.1 函数一般规则1.2 函数参数传递1.3 函数的返回值1 1 1 1 函数函数2 2 2 2 内存管理内存管理3 3 3 3 程序效率程序效率4 4 4 4 质量质量与与可测性可测性5 5 5 5 其它其它2.1 指针运算规则2.2 指针与数组2.3 内存管理未完成未完成C C C C语言编程语言编程1.11.11.11.1 函数一般规则函数一般规则1.2 函数参数传递1.3 函数的返回值1 1 1 1
2、 函数函数2 2 2 2 内存管理内存管理3 3 3 3 程序效率程序效率4 4 4 4 质量质量与与可测性可测性5 5 5 5 其它其它所有参数均为函数输入所有参数均为函数输入函数的输出就是返回值函数的输出就是返回值申 请 形 参 变 量 空 间申 请 形 参 变 量 空 间调 用 函 数调 用 函 数将 实 参 赋 值 给 形 参将 实 参 赋 值 给 形 参函 数 基 于 形 参 运 算函 数 基 于 形 参 运 算运 算 结 束运 算 结 束释 放 临 时 形 参释 放 临 时 形 参函 数 返 回 值函 数 返 回 值函 数 终 止函 数 终 止1.01.0 函数调用过程函数调用过程
3、1.11.1 函数函数规则规则 在同一项目组应明确规定在同一项目组应明确规定对对接口函数参数接口函数参数的合法性检查的合法性检查应由应由函数的调函数的调用者用者负责还是由负责还是由接口函数本身接口函数本身负责,缺省是由负责,缺省是由函数调用者函数调用者负责。负责。说明:对于模块间接口函数的参数的合法性检查这一问题,往往有两个极端现象,即:要么是调用者和被调用者对参数均不作合法性检查,结果就遗漏了合法性检查这一必要的处理过程,造成问题隐患;要么就是调用者和被调用者均对参数进行合法性检查,这种情况虽不会造成问题,但产生了冗余代码,降低了效率。在函数体的在函数体的“入口处入口处”,对参数的有效性进行
4、检查,对参数的有效性进行检查;在函数体的;在函数体的“出口出口处处”,对,对return return return return 语句的正确性和效率进行检查语句的正确性和效率进行检查 防止将函数的参数作为工作变量。防止将函数的参数作为工作变量。说明:将函数的参数作为工作变量,有可能错误地改变参数内容,所以很危险。对必须改变的参数,最好先用局部变量代之,最后再将该局部变量的内容赋给该参数。1.11.1 函数函数规则规则1.1 1.1 函数函数规则规则 函数的规模尽量限制在函数的规模尽量限制在200200200200行以内。行以内。说明:不包括注释和空格行。一个函数一个函数仅完成一件功能仅完成一
5、件功能。为为简单功能简单功能编写函数。编写函数。不要设计多用途面面俱到的函数。不要设计多用途面面俱到的函数。说明:多功能集于一身的函数,很可能使函数的理解、测试、维护等变得困难。函数的功能应该是可以预测函数的功能应该是可以预测的,也就是只要输入数据相同就应产生的,也就是只要输入数据相同就应产生同样的输出。同样的输出。不要省略返回值的类型不要省略返回值的类型,如果函数没有返回值,那么应声明为如果函数没有返回值,那么应声明为void void void void 类型。类型。1.11.1 函数函数规则规则 在调用函数填写参数时,应尽量减少没有必要的默认数据类型转换或强制在调用函数填写参数时,应尽量
6、减少没有必要的默认数据类型转换或强制数据类型转换。数据类型转换。说明:因为数据类型转换或多或少存在危险。避免函数中不必要语句避免函数中不必要语句,防止程序中的垃圾代码,防止程序中的垃圾代码。说明:程序中的垃圾代码不仅占用额外的空间,而且还常常影响程序的功能与性能,很可能给程序的测试、维护等造成不必要的麻烦。防止把没有关联的语句放到一个函数中防止把没有关联的语句放到一个函数中。说明:防止函数或过程内出现随机内聚。随机内聚是指将没有关联或关联很弱的语句放到同一个函数或过程中。随机内聚给函数或过程的维护、测试及以后的升级等造成了不便,同时也使函数或过程的功能不明确。机械工程学院机械工程学院机械工程学
7、院机械工程学院CoME1.11.1 函数函数规则规则 如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。说明:若此段代码各语句之间有实质性关联并且是完成同一件功能的,那么可考虑把此段代码构造成一个新的函数。功能不明确功能不明确 较小的函数较小的函数,特别是仅有一个上级函数调用它时,应考虑,特别是仅有一个上级函数调用它时,应考虑把把它合并到上级函数它合并到上级函数中,而不必单独存在。中,而不必单独存在。设计高扇入、合理扇出(小于设计高扇入、合理扇出(小于7 7 7 7)的函数。)的函数。说明:(扇出是指一个函数直接调用(控
8、制)其它函数的数目,而扇入是指有多少上级函数调用它).扇出过大,表明函数过分复杂,需要控制和协调过多的下级函数;而扇出过小,如总是1,表明函数的调用层次可能过多,这样不利程序阅读和函数结构的分析,并且程序运行时会对系统资源如堆栈空间等造成压力。函数较合理的扇出(调度函数除外)通常是3-5。C C C C语言编程语言编程1.1 函数一般规则1.21.21.21.2 函数参数传递函数参数传递1.3 函数的返回值1 1 1 1 函数函数2 2 2 2 内存管理内存管理3 3 3 3 程序效率程序效率4 4 4 4 质量质量与与可测性可测性5 5 5 5 其它其它1.2.1 1.2.1 1.2.1 1
9、.2.1 参数规则参数规则1.21.2 函数参数传递函数参数传递形参的数据类型与输入参数定义的类型相同;形参的初始值等于输入参数值;变量:类型与输入参数变量相同,如char型需要1个字节;一维指针:无论什么样的类型指针,4个字节;结构体指针:同上;指针的指针:同上;引用:与指针相同,4个字节;数组:与指针相同,4个字节;结构体:大小等于结构体大小。1.2.1 1.2.1 1.2.1 1.2.1 参数规则参数规则1.21.2 函数参数传递函数参数传递参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字;如果函数没有参数,则用void 填充。例如:如果参数是指针,且仅作输入用,则应在类型前加
10、const,以防止该 指针在函数体内被意外修改。避免函数有太多的参数,参数个数尽量控制在5 个以内。如果参数太 多,在使用时容易将参数类型或顺序搞错。1.2.2 1.2.2 1.2.2 1.2.2 变量变量1.21.2 函数参数传递函数参数传递1.2.3 1.2.3 1.2.3 1.2.3 引用引用1.21.2 函数参数传递函数参数传递1.2.4 1.2.4 1.2.4 1.2.4 宏定义与函数宏定义与函数1.21.2 函数参数传递函数参数传递1.2.4 1.2.4 1.2.4 1.2.4 宏定义与函数宏定义与函数1.21.2 函数参数传递函数参数传递1.2.5 1.2.5 1.2.5 1.2
11、.5 指针与数组指针与数组1.21.2 函数参数传递函数参数传递1.2.6 1.2.6 1.2.6 1.2.6 结构体结构体1.21.2 函数参数传递函数参数传递1.2.7 1.2.7 1.2.7 1.2.7 指针的指针指针的指针1.21.2 函数参数传递函数参数传递当没办法用好一维指针时,请不要轻易使用二维指针;当一维指针能够很好运用时,二维指针也不成问题;待补充。问题:函数如何定义、传递二维数组?C C C C语言编程语言编程1.1 函数一般规则1.2 函数参数传递1.3 1.3 1.3 1.3 函数的返回值函数的返回值1 1 1 1 函数函数2 2 2 2 内存管理内存管理3 3 3 3
12、 程序效率程序效率4 4 4 4 质量质量与与可测性可测性5 5 5 5 其它其它1.3.1 1.3.1 1.3.1 1.3.1 变量变量1.31.3 函数返回值函数返回值1.3.2 1.3.2 1.3.2 1.3.2 指针指针1.31.3 函数返回值函数返回值1.3.2 1.3.2 1.3.2 1.3.2 指针指针1.31.3 函数返回值函数返回值1.3.3 1.3.3 1.3.3 1.3.3 结构体与结构体指针结构体与结构体指针1.31.3 函数返回值函数返回值1.3.3 1.3.3 1.3.3 1.3.3 结构体与结构体指针结构体与结构体指针1.31.3 函数返回值函数返回值C C C
13、C语言编程语言编程1 1 1 1 函数函数2 2 2 2 内存管理内存管理3 3 3 3 程序效率程序效率4 4 4 4 质量质量与与可测性可测性5 5 5 5 其它其它2.12.12.12.1 指针运算规则指针运算规则2.2 指针与数组2.3 内存管理定义:定义:定义指针变量的格式类型说明类型说明 *变量名变量名说明:说明:1.1.1.1.变量名前的星号表明定义的变量是指针变量,这种变量只能用来保存变量的地址。指针变量永远是整型的。2.2.2.2.指针变量的类型是指该变量保存是哪种变量的地址例子:例子:定义整型变量指针的格式 int*x;定义实型变量指针的格式float*y;定义字符型变量指
14、针的格式char*c;定义双精度型变量指针的格式double*d;2.1.1 2.1.1 2.1.1 2.1.1 定义指针变量定义指针变量2.1 2.1 指针运算规则指针运算规则取地址运算格式:指针变量=&变量名取地址运算:把变量的地址值取出来保存到指针变量中的过程,称为取地址运算,简称取址运算。说明:符号&是取址运算符,它的含义是取变量的地址值赋给指针变量。指针变量的类型应该与变量的类型一致例子:int x=3,*p=&x;例子:char c=A,*cp;cp=&c;错误用法:int x=3;float*p=&x;变量的类型与指针的类型不一致定义指针变量的同时将变量x的地址赋给指针p先定义指
15、针变量cp再将变量c的地址赋给指针cp2.1.2 2.1.2 2.1.2 2.1.2 取地址运算取地址运算2.1 2.1 指针运算规则指针运算规则地址指向运算:指向运算是用指针变量的值操纵变量的运算。指向运算格式:*指针变量说明:在指针变量前面加星号表示用指针变量的值作为地址编号读取已经存入其中的内容。例子:int x=3,y,*p;p=&x;y=*p;定义变量x和指针变量p取变量x的地址值赋给指针变量p取指针变量p指向变量x的值赋给变量y2.1.3 2.1.3 2.1.3 2.1.3 地址指向运算地址指向运算2.1 2.1 指针运算规则指针运算规则指针赋值运算是把指针的值赋给另外的一个指针,
16、不能把常数或普通变量的值赋给指针,因为这样的操作会给系统带来灾难性的后果。指针赋值运算的格式同变量赋值运算相同。例子:int x,*p1,*p2;p1=&x;p2=p1;说明:给指针赋值的方法有两种1.取变量的地址,赋给指针变量2.把指针的值赋给另一个指针变量取变量的地址,赋给指针变量取变量的地址,赋给指针变量2.1.4 2.1.4 2.1.4 2.1.4 指针赋值运算指针赋值运算2.1 2.1 指针运算规则指针运算规则指针的运算没有四则运算,指针与指针之间没有加法运算、乘法运算和除法运算,只有减法运算。指针之间的加法、乘法和除法是没有任何意义的。指针的减法运算得到的是两个指针之间的距离。指针
17、减法运算格式指针变量-指针变量例子:int x=10,y=5,*p1,*p2;p1=&x;p2=&y;printf(“%dn”,p1-p2);printf(“%dn”,*p1-*p2);说明:在作指针减法运算时指针变量前面不能带有星号,否则演变成两个指针的指向相减。输出两个指针相减后得到两个指针之间的距离输出两个指针指向相减的结输出两个指针指向相减的结果,相当于果,相当于x-yx-yx-yx-y的值,结果为的值,结果为5 5 5 52.1.5 2.1.5 2.1.5 2.1.5 指针减法运算指针减法运算2.1 2.1 指针运算规则指针运算规则指针加数值运算表明指针向后移动若干距离。指针加数值运
18、算格式 指针变量+常量(或变量)说明:指针加数值运算时指针变量前面不要加星号,否则指针加数值运算演变成指针指向加数值运算。例子:int x=10,*p;p=&x;p=p+2;例子:float y=10,*p;p=&y;p=p+2;例子:int x=10,*p;p=&x;printf(“%dn”,*p+2);指针加常数2,表明向后移动两个整型变量的位置指针加常数2,表明向后移动两个实型变量的位置指针指向加常数2,输出的结果为12,等于x+2的值2.1.6 2.1.6 2.1.6 2.1.6 指针加数值运算指针加数值运算2.1 2.1 指针运算规则指针运算规则指针加数值运算表明指针向前移动若干距离
19、。指针加数值运算格式 指针变量-常量(或变量)说明:指针加数值运算时指针变量前面不要加星号,否则指针减数值运算演变成指针指向减数值运算。例子:int x=10,*p;p=&x;p=p-2;例子:float y=10,*p;p=&y;p=p-2;例子:int x=10,*p;p=&x;printf(“%dn”,*p-2);指针减常数2,表明向前移动两个整型变量的位置指针减常数2,表明向前移动两个实型变量的位置指针指向减常数2,输出的结果为8,等于x-2的值2.1.7 2.1.7 2.1.7 2.1.7 指针减数值运算指针减数值运算2.1 2.1 指针运算规则指针运算规则C C C C语言编程语言
20、编程1 1 1 1 函数函数2 2 2 2 内存管理内存管理3 3 3 3 程序效率程序效率4 4 4 4 质量质量与与可测性可测性5 5 5 5 其它其它2.1 指针运算规则2.2 2.2 2.2 2.2 指针与数组指针与数组2.3 内存管理 C+/C 程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程
限制150内