background image

C/C++编程新手错误语录

1.引言
  还记得当年学数学、英语都有个窍门,那就是搞个错题集。经常复习一下这个错题集,
就可以避免下次犯同样的错误。而几乎所有的程序员都是从犯错误开始的,我们也很有必
要总结一下编程新手的常见错误,本文的目的在于此。文中所列出的都是笔者在项目开发

中接触到的新手真实的言谈,笔者学学文革腔调,姑且称之为 错误语录 。

2.语录

(1) 我的程序都是对的,可结果不对
  想想你的周围,是不是也有人说这样的话?如果你也曾经说过,那就此打住,不要
再说这句话,因为这句话只会显示说话者的无知。既然程序都是对的,那为什么结果不对?

(2 “

) 程序=算法+

数据结构

  如果刚刚学完 C 语言,我们说这样的话,完全可以理解,而且可以说是正确的。但是
如果你是一位即将从事 C/C++编程的程序员,那么很遗憾,这个说法只能判错,殊不知,
世界上还有另一种说法:

 

  程序 = 对象 + 消息

  程序=算法+

数据结构 只对面向过程的语言(C)成立,而对面向对象的语言(C++),

则只能表述为 程序=对象+

消息 。传统的过程式编程语言以过程为中心以算法为驱动,面

向对象的编程语言则以对象为中心以消息为驱动。这里的消息是广义的,对象 A 调用了对
象 B 的成员函数,可看作对象 A 给 B 发消息。

(3 “

) 程序编出来,运行正确就行了

  运行正确的程序并不一定是好程序,程序员时刻要牢记的一条就是自己写的程序不
仅是给自己看的,要让别人也能轻易地看懂。很遗憾,许多的编程新手不能清晰地驾驭软
件的结构,对头文件和实现文件的概念含糊不清,写出来的程序可读性很差。

  C 程序采用模块化的编程思想,需合理地将一个很大的软件划分为一系列功能独立
的部分合作完成系统的需求,在模块的划分上主要依据功能。模块由头文件和实现文件组
成,对头文件和实现文件的正确使用方法是:
  规则 1 头文件(.h)中是对于该模块接口的声明,接口包括该模块提供给其它模块调
用的外部函数及外部全局变量,对这些变量和函数都需在.h 中文件中冠以 extern 关键字
声明;
  规则 2 模块内的函数和全局变量需在.c 文件开头冠以 static 关键字声明;
  规则 3 永远不要在.h 文件中定义变量;

  许多程序员对定义变量和声明变量混淆不清,定义变量和声明变量的区别在于定义
会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连
接阶段从其它模块寻找外部函数和变量。如: