Linux 版 (精华区)

发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标  题: ◇ 之三 -- 指标 - 强 强 强
发信站: 紫 丁 香 (Sun Nov 15 21:51:14 1998), 转信


寄信人: guest.bbs@hgluo.hust.edu.cn 
标  题: ◇ 之三 -- 指标 - 强 强 强
发信站: 华南理工大学 BBS木棉站
日  期: Thu Feb 20 14:30:30 1997

       战   斗   世   家   C 语言讲座                  #3

                                 作者: Lgw Lu
                                 E-Mail: lgwlu@ms1.hinet.net
---------------------------------------------------------------

                   < 指标 - 强 强 强 >

前言:

     C 语言最强的资料型态,说 "指标" 应该不为过!!  也是因为有指标
  所以 C 才变得很有 "弹性",应用起来也就可以 - 天马行空...

内文:

     相信大家对指标一定已有一基本概念了!! 任何资料型态都可以有
  指标形式!!

  Ex:
     char *p;
     int  *p;
     union XX *p;
     struct XX *p;
     .....

  在这要说几个比较不同的!!

  (1) void

     这个 KeyWord 若加在函式之前,表示不传回值,加在参数表示,不
  传入任何参数.

  Ex:
     void func(void);

     那这个呢?!

     void *P;

     其实这是表示,此指标可以指向任何资料型态,亦即当你不确定会
  得到啥资料型态时,就可使用。

  Ex:

     int func(void *P)   /* 这样便可传入任何型态资料 */

     注意!! 不确定时才用,不要滥用,记得 #1 的内容吗?!
  - < 宣告的重要性 > -

  (2) 函式指标

     这个我想很多人都用过,尤其是写 TSR 或 ISR 的人!!

  Ex:
     void  __interrupt  __far int8(void);

     但是这里我并不是要说这个,这 ISR、TSR 外头书很多,但函式指
  标的运用,外头的书,真是少之又少,往下看吧!!

  Ex1:
     main()
        {
        int x;

        scanf("%d",&x);

        switch(x)
          {
          case 1: func1(); break;
          case 2: func2(); break;
          case 3: func3(); break;
          ......
          .....
          case 9: func9(); break;
          }
        }

     这种架构相信大家都有用过吧!! 用一 switch 来选择某一功能函
  式,感觉上好像是一定的!!

     OH!! NO!! 看完这篇後你就会发现原来还有 更 "快",更 "小"
  的程式写法 - 函式指标。请看修改後的方法。

  Ex2:    /* Ex1 修改 */
     main()
        {
        int x;

        int (*dpfi[])()= \
           { func1,func2,func3 ......func9 };

        scanf("%d",&x);

        (*dpfi[x-1])();   /* 只需 1 行 */
        }

     这就是修改後的程式,看!! 是不是短多了,且速度比用 switch 快
  !! ( Ex2 程式,应该都了解吧!!)

  (这些□例,都是边打边写,很多欠考虑及坏习惯,自己运用时不要和我
   一样,如 宣告 default .....,因为这些只是为教学用,SO....看的
   懂就行啦,不要 " 吐潮 " 我。 :) )

     指标运用 "无远弗届",当然还有更多运用,以後我会慢慢再讲,像
  多重指标运用,直接指向 Address 运用....
  (因为我打字慢,SO 每次打到 100 多行时,就..... 累了 :<
   所以我每篇大概都会在 150 行以内。  唉!! 手指欠操 :) )

     总之,当你觉得 C 已没啥好再学的时候,玩玩指标吧!!  搞不好又
  让你玩出新花样,到时记得要宣扬宣扬.
  (指标很好用,结果 JAVA 把指标拿掉了!!!!! 也许以後的高阶语言会
   越来越 "高阶"!! )


预告:
     下篇将介绍一下 "不定参数" 的用法及运用。记得多支持呦!!
  < 死角 - 不定参数 >

---------------------------------------------------------------

                  <<< 本文版权属於作者 >>>
     本文章可自由引用,拷贝,传阅,但需保持本文章之完整性,从标题
  到最後版权宣告,且不能用来做商业用途!!

     若有任何问题,或是错误之处,欢迎来信批评指教!! 谢谢!!




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