通行证: 用户 密码
http://www.pconline.cn/
汽车网 | 游戏网 | 时尚女性
分站:北京 上海 广州 深圳 香港
广西 重庆 山东 江苏 辽宁 福建
首 页 | 今日报价 | 产业资讯 | 数码世界 | 硬件资讯 | 软件资讯 | 下 载 | 游 戏 |
论 坛 | 产 品 库 | 渠道商情 | 招聘培训 | 二    手 | 评 测 室 | 导 购 | 社 区 |
摄影
部落
手 机
数码相机
随身听
 DIY配件
笔记本
 台式机
摄像机
精品廊
-
您现在的位置: 软件资讯 > 开发特区 > 开发语言 > C/C++ 免费新闻代码RSS新闻聚合
  C/C++编程新手错误语录 出处:PConline
[ 2005-08-25 10:01:53 ] 作者:宋宝华 责任编辑:moningfeng

     

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

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

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

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

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

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

/*模块1头文件:module1.h*/
int a = 5; /* 在模块1的.h文件中定义int a */
/*模块1实现文件:module1 .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*/
extern int a; /* 在模块1的.h文件中声明int a */
/*模块1实现文件:module1 .c*/
#include “module1.h” /* 在模块1中包含模块1的.h文件 */
int a = 5; /* 在模块1的.c文件中定义int a */
/*模块2 实现文件: module2 .c*/
#include “module1.h” /* 在模块2中包含模块1的.h文件 */
/*模块3 实现文件: module3 .c*/
#include “module1.h”   /* 在模块3中包含模块1的.h文件 */


  这样如果模块1、2、3操作a的话,对应的是同一片内存单元。

Flash剧场全新改版,精品Flash让你看够玩够!


[1] [2] [3] [下一页]

更多相关搜索: C/C++.. 编程新手.. 错误语录..
正在加载评论,请稍候…

发给好友 我要报错 投稿给我们 加入收藏 返回顶部

本栏今日更新
相关文章
·万众期待,MSN Messenger 7.5 Final发布
·网上再现非官方Windows XP SP3(图)
·可语音聊天, Google IM更多消息披露
·侧边栏的威力:Google桌面搜索2.0发布
·变焦,制作动画!摄像头还可以这样玩
·精彩问答:IE下载故障解决办法
·表情[人物]:我的宝贝张含韵
·C/C++编程新手错误语录
·C/C++头文件一览

完美时尚娱乐:2004年腾讯QQ评测大观
精彩无限:MSN Shell4使用指南
亲手制作鲜花情人贺卡送给她
挑战伏明霞?企鹅跳水游戏,看你能得多少分?

新闻搜索
高级搜索
-
热点专题
·挑战十大Flash智益游戏
·QQ辅助软件使用指南
·向"流氓软件"大声说不!
·惜别!毕业十大必唱歌曲
·常用软件的另类用法集
·搜索技巧:网罗天下的乐趣
·电脑艺术设计大师之路连载
·老歌歪唱Flash MV爆笑欣赏
更多...
Flash排行榜
·头文字D插曲-一路向北
·暴笑恶搞MV-《从良》
·笑谈广东话-叽叽噶噶
·恶搞!PP鸡打劫记之一
·下辈子如果我还记得你
·疯狂射击游戏-火凤凰号
·悲怆!披着羊皮的狼
·搞笑MV-亲爱的对不起
更多...
IT培训热门文章
· 月薪5万,微软最新面试题
· 微软召开黑客大会(图)
· 美军超级黑客特种部队揭密
· Linux下软件安装详解(图)
· 软考模拟软件(网络工程师)
· 2005年软件水平考试资料
· 世界编程大赛第1名写的程序
· 某变态公司的面试IQ题
更多...
PConline频道精选