cc++编程新手错误笔记

cc++编程新手错误笔记

ID:17639711

大小:53.50 KB

页数:23页

时间:2018-09-04

cc++编程新手错误笔记_第1页
cc++编程新手错误笔记_第2页
cc++编程新手错误笔记_第3页
cc++编程新手错误笔记_第4页
cc++编程新手错误笔记_第5页
资源描述:

《cc++编程新手错误笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、CC++编程新手错误笔记1.引言  还记得当年学数学、英语都有个窍门,那就是搞个错题集。经常复习一下这个错题集,就可以避免下次犯同样的错误。而几乎所有的程序员都是从犯错误开始的,我们也很有必要总结一下编程新手的常见错误,本文的目的在于此。文中所列出的都是笔者在项目开发中接触到的新手真实的言谈,笔者学学文革腔调,姑且称之为“错误语录”。(1)“我的程序都是对的,可结果不对”  想想你的周围,是不是也有人说这样的话?如果你也曾经说过,那就此打住,不要再说这句话,因为这句话只会显示说话者的无知。既然程序都是对的,那为什么

2、结果不对?(2)“程序=算法+数据结构”  如果刚刚学完C语言,我们说这样的话,完全可以理解,而且可以说是正确的。但是如果你是一位即将从事C/C++编程的程序员,那么很遗憾,这个说法只能判错,殊不知,世界上还有另一种说法:  程序=对象+消息 “程序=算法+数据结构”只对面向过程的语言(C)成立,而对面向对象的语言(C++),则只能表述为“程序=对象+消息”。传统的过程式编程语言以过程为中心以算法为驱动,面向对象的编程语言则以对象为中心以消息为驱动。这里的消息是广义的,对象A调用了对象B的成员函数,可看作对象A给B

3、发消息。(3)“程序编出来,运行正确就行了”  运行正确的程序并不一定是好程序,程序员时刻要牢记的一条就是自己写的程序不仅是给自己看的,要让别人也能轻易地看懂。很遗憾,许多的编程新手不能清晰地驾驭软件的结构,对头文件和实现文件的概念含糊不清,写出来的程序可读性很差。  C程序采用模块化的编程思想,需合理地将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求,在模块的划分上主要依据功能。模块由头文件和实现文件组成,对头文件和实现文件的正确使用方法是:规则1头文件(.h)中是对于该模块接口的声明,接口包括该模块

4、提供给其它模块调用的外部函数及外部全局变量,对这些变量和函数都需在.h中文件中冠以extern关键字声明;规则2模块内的函数和全局变量需在.c文件开头冠以static关键字声明;规则3永远不要在.h文件中定义变量;许多程序员对定义变量和声明变量混淆不清,定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。如:/*模块1头文件:module1.h*/inta=5;/*在模块1的.h文件中定义inta*//*模块1实现文件:mo

5、dule1.c*/#include“module1.h”/*在模块1中包含模块1的.h文件*//*模块2实现文件:module2.c*/#include“module1.h”/*在模块2中包含模块1的.h文件*//*模块2实现文件:module3.c*/#include“module1.h”/*在模块3中包含模块1的.h文件*/以上程序的结果是在模块1、2、3中都定义了整型变量a,a在不同的模块中对应不同的地址单元,这明显不符合编写者的本意。正确的做法是:/*模块1头文件:module1.h*/externinta

6、;/*在模块1的.h文件中声明inta*//*模块1实现文件:module1.c*/#include“module1.h”/*在模块1中包含模块1的.h文件*/inta=5;/*在模块1的.c文件中定义inta*//*模块2实现文件:module2.c*/#include“module1.h”/*在模块2中包含模块1的.h文件*//*模块3实现文件:module3.c*/#include“module1.h” /*在模块3中包含模块1的.h文件*/这样如果模块1、2、3操作a的话,对应的是同一片内存单元。规则4如果

7、要用其它模块定义的变量和函数,直接包含其头文件即可。许多程序员喜欢这样做,当他们要访问其它模块定义的变量时,他们在本模块文件开头添加这样的语句:externintexternVar; 抛弃这种做法吧,只要头文件按规则1完成,某模块要访问其它模块中定义的全局变量时,只要包含该模块的头文件即可。(4)“数组名就是指针”  许多程序员对数组名和指针的区别不甚明了,他们认为数组名就是指针,而实际上数组名和指针有很大区别,在使用时要进行正确区分,其区分规则如下:规则1 数组名指代一种数据结构,这种数据结构就是数组;  例如:

8、charstr[10];char*pStr=str;cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。