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.037毫秒