posts - 195, comments - 34, trackbacks - 0, articles - 1
          (一)簡單的函數指針的應用。
          //形式1:返回類型(*函數名)(參數表)
          char (*pFun)(int);
          char glFun(int a){ return;}
          void main()
          {
              pFun = glFun;
              (*pFun)(2);
          }

                  第一行定義了一個指針變量pFun。首先我們根據前面提到的“形式1”認識到它是一個指向某種函數的指針,這種函數參數是一個int型,返回值是char類型。只有第一句我們還無法使用這個指針,因為我們還未對它進行賦值。
                  第二行定義了一個函數glFun()。該函數正好是一個以int為參數返回char的函數。我們要從指針的層次上理解函數——函數的函數名實際上就是一個指針,函數名指向該函數的代碼在內存中的首地址。
                  然后就是可愛的main()函數了,它的第一句您應該看得懂了——它將函數glFun的地址賦值給變量pFun。main()函數的第二句中“*pFun”顯然是取pFun所指向地址的內容,當然也就是取出了函數glFun()的內容,然后給定參數為2。
          (二)使用typedef更直觀更方便。
          //形式2:typedef 返回類型(*新類型)(參數表)
          typedef char (*PTRFUN)(int);
          PTRFUN pFun;
          char glFun(int a){ return;}
          void main()
          {
              pFun = glFun;
              (*pFun)(2);
          }

                  typedef的功能是定義新的類型。第一句就是定義了一種PTRFUN的類型,并定義這種類型為指向某種函數的指針,這種函數以一個int為參數并返回char類型。后面就可以像使用int,char一樣使用PTRFUN了。
                  第二行的代碼便使用這個新類型定義了變量pFun,此時就可以像使用形式1一樣使用這個變量了。
          (三)在C++類中使用函數指針。
          //形式3:typedef 返回類型(類名::*新類型)(參數表)
          class CA
          {
           public:
              char lcFun(int a){ return; }
          };
          CA ca;
          typedef char (CA::*PTRFUN)(int);
          PTRFUN pFun;
          void main()
          {
              pFun = CA::lcFun;
              ca.(*pFun)(2);
          }

                  在這里,指針的定義與使用都加上了“類限制”或“對象”,用來指明指針指向的函數是那個類的這里的類對象也可以是使用new得到的。比如:
          CA *pca = new CA;
          pca->(*pFun)(2);
          delete pca;

                  而且這個類對象指針可以是類內部成員變量,你甚至可以使用this指針。比如:
                  類CA有成員變量PTRFUN m_pfun;
          void CA::lcFun2()

             (this->*m_pFun)(2);
          }

                  一句話,使用類成員函數指針必須有“->*”或“.*”的調用。

           

           

          作者:csumck   更新日期:2004-11-07
          來源:CSDN   瀏覽次數:



          主站蜘蛛池模板: 长葛市| 聂荣县| 灌阳县| 德化县| 绥江县| 呈贡县| 博湖县| 中卫市| 江川县| 安化县| 辽阳市| 高邮市| 龙井市| 绥中县| 兴安县| 深水埗区| 阿拉尔市| 德保县| 南靖县| 牟定县| 邢台县| 陆川县| 大荔县| 荆门市| 浦北县| 咸阳市| 葵青区| 新巴尔虎右旗| 香河县| 顺昌县| 浦北县| 乐昌市| 通海县| 邻水| 湘潭县| 凤山县| 光泽县| 呼和浩特市| 旌德县| 太谷县| 哈密市|