高质量C语言编程指南.ppt

上传人:飞猪 文档编号:149071 上传时间:2025-07-11 格式:PPT 页数:54 大小:950.06KB
下载 相关 举报
高质量C语言编程指南.ppt_第1页
第1页 / 共54页
高质量C语言编程指南.ppt_第2页
第2页 / 共54页
高质量C语言编程指南.ppt_第3页
第3页 / 共54页
高质量C语言编程指南.ppt_第4页
第4页 / 共54页
高质量C语言编程指南.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、高质量C语言编程指南路南平7/11/20251高质量C语言编程指南目录n1.文件结构n2.程序的版式n3.命名规则n4.表达式和基本语句n5.函数设计n6.内存管理n7.其他编程经验7/11/20252高质量C语言编程指南文件结构nC/C+程序中,文件有头文件、实现文件资源文件等类型。常见的是以.h结尾的头文件以.C或者.CPP结尾的实现文件.7/11/20253高质量C语言编程指南版权和版本的声明n版权和版本的声明:位于头文件和实现文件的开头,主要说明了版权信息和版本信息7/11/20254高质量C语言编程指南头文件结构7/11/20255高质量C语言编程指南实现文件结构7/11/20256

2、高质量C语言编程指南目录结构n当软件的数目比较多时,通常将头文件和实现文件分别保存在不同的目录便于维护.7/11/20257高质量C语言编程指南程序的版式n空行:每个函数定义结束之后都要加空行。7/11/20258高质量C语言编程指南程序的版式n函数体内:逻辑上密切相关的语句之间不加空行,其他地方应加空行分割。7/11/20259高质量C语言编程指南程序的版式n代码行:一行代码只做一件事。nif、for、while、do等语句自占一行,执行语句不得紧随其后。无论代码多少,都要加。7/11/202510高质量C语言编程指南程序的版式n代码行内的空格:nvoid Fun(int x,int y,i

3、nt z);不良风格代码nVoid Fun(int x,int y,int z);nif(year=200)不良风格nIf(year=200)nIf(a=b&c=b)&(c=d)nx=ab?a:b;不良风格nx=a b&c d&c+f=g+h;n不要用多用途的复合表达式。nd=(a=b+c)+r;n不要把程序中的复合表达式与真正的数学表达式混淆。nif(a b=-0.0001)&(value=0.0001)7/11/202525高质量C语言编程指南IF语句(续)n指针变量与0值比较nif(p=0)if(p)n应当将指针变量用“=”或“!=”与NULL比较nif(p=NULL)if(p!=NUL

4、L)nIf(NULL=p)nIf/else/return 组合nif(condition)n return x;nreturn y;n良好风格:return(condition?x:y);7/11/202526高质量C语言编程指南循环效率在多重循环中,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。7/11/202527高质量C语言编程指南循环效率(续)如果循环体内存在逻辑判断,并且循环体次数很大,宜将逻辑判断移动到循环体的外面。7/11/202528高质量C语言编程指南FOR语句的循环控制变量n不可在FOR循环体内修改循环变量,防止FOR循环失去控制。nfor

5、i=0;i 10;i+)n doSomeThing();n i+;nn建议FOR语句的循环控制变量采用“半开半闭区间”写法。nFor(x=0;x=9;x+)7/11/202529高质量C语言编程指南Switch语句1.每个case语句的结尾不要忘记break;2.最后添加一个default;3.Case关键字之后的值 有什么要求么?case后面只能是整型或字符型的常量或常量表达式。4.Case语句的顺序有什么要求?把正常情况的语句放在前面,而把异常情况的语句放在后面。7/11/202530高质量C语言编程指南GOTO 语句ngoto语句也称为无条件转移语句,一般格式如下:goto 语句标号;

6、其中语句标号是按标识符规定书写的符号,放在某一语句行的 n前面,标号后加冒号(:)。n在跳出多重循环的时候,比较简洁。n慎用!7/11/202531高质量C语言编程指南常量n常量的作用:n避免了意义模糊的数字出现,使得程序语义流畅清晰n可以很方便地进行参数的调整与修改n提高了程序的执行效率,由于使用了预编译器进行值替代,并不需要为这些常量分配存储空间,所以执行的效率较高。n用法:n#define MAX 1007/11/202532高质量C语言编程指南函数设计n参数的规则:n1.参数书写要完整。nvoid SetValue(int,int);nvoid SetValue(int width,i

7、nt height);n2.函数命名要恰当,顺序要合理。nvoid StringCopy(char*str1,char*str2);nvoid StringCopy(char*strSource,char*strDestion);7/11/202533高质量C语言编程指南参数规则n3.参数是指针,且仅做输入用,应在类型前加const防止修改。nvoid StringCopy(char*strDestion,const char*strSource);n4.避免函数有太多的参数。n5.尽量不要使用类型和数目不确定的参数。nint printf(const char*format,argument

8、);7/11/202534高质量C语言编程指南返回值规则n1.不要省略返回值的类型。n2.函数名字与返回值类型在语义上可不冲突。函数原型:Int getchar(void)3.不要将正常值和错误标志混在一起返回。正常值用输出参数获得,错误表示用return语句返回。4.有时候函数原本不需要返回值,为增加灵活性可以附加返回值。char*strcpy(char*strDest,const char*strSrc);可以支持链式表达int length=strlen(strcpy(str,Hwello World);7/11/202535高质量C语言编程指南函数内部实现规则n1.在函数体的入口处,

9、对参数的有效性进行检查。n2.在函数体的出口处,对return语句的正确性和效率进行检查。nchar*Func(void)nnchar str=hello world;nreturn str;nnreturn 语句不可返回指向栈内存的指针。7/11/202536高质量C语言编程指南assert 断言n1.assert断言仅在Debug版本有效如果不可能发生的事情的确发生了,则要使用断言进行报警。7/11/202537高质量C语言编程指南内存管理n内存分配的方式:n1.从静态存储区域分配。全局变量static变量。n2.从栈上创建。系统自动管理.n3.从堆上分配,即动态内存分配。程序员管理.n常

10、见错误.n1.内存分配未成功,却使用了它.n解决:指针p是函数的参数,在入口处用assert(p!=NULL)检查。如果是malloc来申请内存,用if(p=NULL)或if(p!=NULL)进行放错处理。7/11/202538高质量C语言编程指南常见错误n 2.内存分配虽然成功,但是尚未初始化就引用它。nInt a100;nFor(i=0;i100;i+)nnif(ai=0)nn有的编译器初始化数组为0有的不是n最好在创建的时候赋值。7/11/202539高质量C语言编程指南常见错误n3.内存分配成功并且已经初始化,但操作越过了内存的边界。n4.忘记释放内存,造成内存泄漏。nNew/dele

11、te malloc/freen5.释放了内存却继续使用n(1).return 语句返回栈内存,n(2).free或者delte释放了内存之后,没设置指针为NULL,导致野指针;7/11/202540高质量C语言编程指南建议n1.malloc或new申请内存之后,立即检查指针值是否为NULL。n2.为数组和动态内存赋初值。n3.避免数组或者指针的下标越界。n4.动态内存的申请与释放必须配对。n5.fee或delete释放内存之后,立即将指针设置为NULL。7/11/202541高质量C语言编程指南指针与数组的对比n1.数组被创建在静态存储区或者栈上,数组名对应着一块内存,其地址与容量在生命期内保

12、持不变,数组的内容可以改变。n2.指针可以随时指向任意类型的内存块,其地址在生命期内保持不变,内容可变。7/11/202542高质量C语言编程指南指针与数组的区别n修改内容:7/11/202543高质量C语言编程指南指针与数组的区别n内容复制:7/11/202544高质量C语言编程指南n计算内存容量:指针与数组的区别7/11/202545高质量C语言编程指南指针参数如何传递内存7/11/202546高质量C语言编程指南正确的传递程序(传地址)7/11/202547高质量C语言编程指南“野指针”free只是把指针所指的内存给释放掉,但并没有把指针本身删除掉。指针指向的地址对应的内存是垃圾,指针成

13、了野指针;其他情况产生野指针:1.指针变量在创建的时候没有被初始化。2.指针操作超越了变量的作用范围。7/11/202548高质量C语言编程指南“野指针”(续)7/11/202549高质量C语言编程指南动态内存释放问题忠告:1.指针消亡了,并不表示它所指向的内存会被自动释放。2.内存被释放了,并不表示指针会消亡或者成了NULL指针。7/11/202550高质量C语言编程指南内存耗尽的处理方式n1.判断指针是否为NULL,如果是马上用return语句终止本函数。n2.判断指针是否为NULL,如果是马上用exit(1)终止整个程序的运行。7/11/202551高质量C语言编程指南Malloc/fr

14、ee 使用要点nvoid*malloc(size_t size);n申请一块长度为length的整数类型的内存。nint*p=(int*)malloc(sizeof(int)*length);nvoid free(void*memblock);n对NULL指针多次操作均无问题n对非NULL指针多次操作有问题。7/11/202552高质量C语言编程指南其他编程经验n1.使用CONST提高函数的健壮性。n2.不要一味追求程序的效率,应当在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。n3.在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关紧要之处优化。n4.尽量使用标准库函数。7/11/202553高质量C语言编程指南n谢谢大家!n问题交流。7/11/202554高质量C语言编程指南

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > C/C++资料

宁ICP备18001539号-1