Linux 版 (精华区)
发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标 题: ◇ 之一 -- 宣告的重要性
发信站: 紫 丁 香 (Sun Nov 15 21:50:38 1998), 转信
寄信人: guest.bbs@hgluo.hust.edu.cn
标 题: ◇ 之一 -- 宣告的重要性
发信站: 华南理工大学 BBS木棉站
日 期: Thu Feb 20 14:31:17 1997
战 斗 世 家 C 语言讲座 #1
作者: Lgw Lu
E-Mail: lgwlu@ms1.hinet.net
---------------------------------------------------------------
< 宣告的重要性 >
前言:
小弟用 C 语言 3 年了,虽然功力普通,不过因为发表欲强烈,加上
对 C 极度喜爱,因此不自量力的想在网路上发表一些个人经验及技巧
,也许这些内容在高手眼里不算什麽,但我相信总会有需要的人,可以
学到一些观念或技术的,这就是我的希望!!
本讲座并非教授一般 C 语言程式设计,毕竟这些东东在世面上已
有很多书籍可供参考。在这里主要是讲些平常比较不注意到的事,或是
一些设计技巧,也许是一些产品介绍,也许是...... 总之,这是一个大
杂锅,各种东东都有,希望各位会喜欢.
一般情况,本讲座都会以类似这些格式发表,因为这是第一篇,所以
废话多了点。 :>
基本是一周发一篇,若太久没发,记得来信骂骂我! :_|
内文:
a() int b(void)
{ {
/* 程式 */ /* 程式 */
} }
很多人都知道这两种宣告都是相同的,但是 b 函式才是一个好的
宣告法,为什麽呢?!
因为你知道,但 Compiler 不知道!! <=== 重点
b 的宣告可以让 Compiler 自动检查型态是否错误,以免明明是不
需传参数,但却传了,有些检查较不严格的 Compiler,可能会允许你
a(x) 结果却成功!! But 这是错的!!
另外 const 也是一个好用的 KeyWord,它可以让你对某变数只读
但不能改。也许有人会说这作用不大嘛!!其实作用大多了,至少有两种
作用:
(1) 最佳化
Ex1: Ex2:
char str1[]="TEST"; const char str1[]="TEST";
char str2[]="TEST"; const char str2[]="TEST";
如果在程式中这两个字串都不改,那 Ex1 会在 Memory 中有两份
"TEST",而 Ex2 却只有一份!!
(2) 不易出错
Ex1: Ex2:
int a(struct TEST *s) int a(const struct TEST *s)
{ {
{ {
/* .... */ /* ...... */
} }
如果 a 这函式,只是想用此 struct 来做处理,而不想修改此
struct 资料。如果用 Ex2 方式的话,不小心改到,则 Compiler 会给
你错误讯息,但 Ex1 却不会!! (Call by Address)
由以上两点,你应该知道 const 的好处了吧!!
(如果没好处 ANSI C 也不会加入此 KeyWord,但 K&R C 却无...)
以後写程式不要再偷懒,因为你懒,Compiler 也跟你一起懒!!
(它不帮你检查型别)
预告:
下篇将简单介绍 K&R C 和 ANSI C 的不同,并让你知道 ANSI C
比 K&R C 好在哪!! < K&R C vs ANSI C >
---------------------------------------------------------------
<<< 本文版权属於作者 >>>
本文章可自由引用,拷贝,传阅,但需保持本文章之完整性,从标题
到最後版权宣告,且不能用来做商业用途!!
若有任何问题,或是错误之处,欢迎来信批评指教!! 谢谢!!
--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--
Enjoy Linux!
-----It's FREE!-----
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.647毫秒