青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

kenlistian

厚積薄發. 勤為槳,思為帆

   :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
  73 隨筆 :: 4 文章 :: 22 評論 :: 0 Trackbacks

一個函數指針的理解:
 有一段程序存儲在起始地址為 0的一段內存上,如果我們想要調用這段程序,請問該如何去做?
 答案是 (*(void (*)( ) )0)( )。

 首先,最基本的函數聲明: void function (paramList);
 最基本的函數調用: function(paramList);

  鑒于問題中的函數沒有參數,函數調用可簡化為 function();
   根據問題描述,可以知道 0是這個函數的入口地址,也就是說,0是一個函數的指針。
   使用函數指針的函數聲明形式是:void (*pFunction)(),相應的調用形式是: (*pFunction)(),
   則問題中的函數調用可以寫作:(*0)( )。

  大家知道,函數指針變量不能是一個常數,因此上式中的 0必須要被轉化為函數指針。

  我們先來研究一下,對于使用函數指針的函數:
        比如 void (*pFunction)( ),函數指針變量的原型是什么?
    這個問題很簡單,pFunction函數指針原型是( void (*)( ) ),即去掉變量名,
    清晰起見,整個加上()號。

  所以將 0強制轉換為一個返回值為void,參數為空的函數指針如下:( void (*)( ) )。

   OK,結合2)和3)的分析,結果出來了,那就是:(*(void (*)( ) )0)( ) 。

  答案分析:從頭到尾理解答案

   (void (*)( )) ,是一個返回值為void,參數為空的函數指針原型。
   (void (*)( ))0,把0轉變成一個返回值為void,參數為空的函數指針,指針指向的地址為0.
   *(void (*)( ))0,前面加上*表示整個是一個返回值為void的函數的名字
   (*(void (*)( ))0)( ),這當然就是一個函數了。

  我們可以使用 typedef清晰聲明如下:

   typedef void (*pFun)();

這樣定義之后,pFun就是一個返回類型為void無參數的函數指針變量了。

  這樣函數變為 (*(pFun)0)();


----
在調用動態庫時,習慣用typedef重新定義動態庫函數中的函數地址(函數指針),
如在動態庫(test.dll)中有如下函數:
int DoCase(int, long);

則,在調用動態庫是有兩種方法:
1. 先聲明一個與動態庫中類型一致的指針函數變量:
int (*DOCASE)(int ,long);  //用于指向動態庫中的DoCase函數地址
HINSTANCE gLibMyDLL = NULL;
gLibMyDLL 
= LoadLibrary("test.dll");
if(gLibMyDLL != NULL)
{
  DOCASE 
= (int(*)(int,long))GetProcAddress(gLibMyDLL, "DoCase");
}
int s = DOCASE(1,1000);

2.用typedef定義一個指針函數:
typedef (
*DOCASE)(int ,long);

HINSTANCE gLibMyDLL 
= NULL;
DOCASE _docase;
gLibMyDLL 
= LoadLibrary("test.dll");
if(gLibMyDLL != NULL)
{
  _docase 
= (DOCASE)GetProcAddress(gLibMyDll, "DoCase");
}

int s=_docase(1,1000);


----------------
在C++類中使用函數指針。
//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);
}
一句話,使用類成員函數指針必須有“->*”或“.*”的調用。


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

void test(void* );
void tt()
{
   printf(
"kao,沒玩過這種\n");
}

int main(int argc, char* argv[])
{
    typedef 
void(*Fun)();
    Fun mytest;
    mytest 
= tt;
    test((
void*)mytest);
    
return 0;
}

void test(void * p)
{
    (
*(void(*)())p)();
}


posted on 2008-10-29 22:23 kenlistian 閱讀(825) 評論(1)  編輯 收藏 引用 所屬分類: cpp

評論

# re: 匯總函數指針理解[未登錄] 2008-10-31 17:15 908971
受教了  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99亚洲一区二区| 亚洲欧美综合精品久久成人| 久久婷婷影院| 久久久久亚洲综合| 激情婷婷久久| 欧美高清免费| 欧美韩日精品| 亚洲视频精品| 欧美伊久线香蕉线新在线| 欧美激情 亚洲a∨综合| 99精品视频免费在线观看| 免费成人黄色av| 欧美福利视频网站| 一区二区日韩精品| 亚洲欧美区自拍先锋| 国产视频精品va久久久久久| 久久久www成人免费毛片麻豆| 欧美有码视频| 亚洲精品欧洲| 亚洲欧美激情视频| 韩国精品一区二区三区| 亚洲激情成人网| 国产精品theporn| 久久全球大尺度高清视频| 蜜臀99久久精品久久久久久软件| 一区二区av| 久久国产天堂福利天堂| 亚洲第一精品福利| 亚洲午夜精品久久| 亚洲黑丝一区二区| 亚洲欧美综合精品久久成人| 在线免费观看成人网| 一本色道久久综合精品竹菊| 伊人久久综合97精品| 亚洲美女精品成人在线视频| 国产日韩欧美高清免费| 亚洲激情自拍| 黄色国产精品| 亚洲视频狠狠| 亚洲精品一区二区三区婷婷月 | 99在线热播精品免费| 亚洲免费在线视频一区 二区| 亚洲国产精品久久久久秋霞影院| 在线亚洲自拍| 一区二区高清视频在线观看| 久久精品综合| 欧美一区二区视频网站| 欧美日韩亚洲国产一区| 亚洲大胆人体在线| 国内精品久久久久久久影视蜜臀| 日韩午夜精品| 日韩一级裸体免费视频| 久久综合色88| 久热精品视频在线观看一区| 国产精品亚发布| 一区二区三区四区在线| 一本久道久久综合狠狠爱| 久久综合国产精品| 蜜臀久久久99精品久久久久久 | 国产精品嫩草影院av蜜臀| 亚洲国产婷婷香蕉久久久久久| 国产一区二区三区日韩| 亚洲综合二区| 欧美在线观看你懂的| 国产精品天天看| 一区二区三区鲁丝不卡| 一本色道久久88精品综合| 欧美激情精品久久久久久黑人| 久久三级福利| 在线观看视频日韩| 久久琪琪电影院| 欧美顶级大胆免费视频| 亚洲国产高清自拍| 久久欧美中文字幕| 欧美激情一区二区久久久| 亚洲国产欧美一区二区三区丁香婷| 久久久91精品国产| 欧美韩国一区| 日韩亚洲国产欧美| 欧美日韩理论| 性色av香蕉一区二区| 久久久99爱| 亚洲国产99精品国自产| 欧美a级一区二区| 99精品欧美一区二区三区综合在线| 一区二区不卡在线视频 午夜欧美不卡在| 欧美国产视频在线观看| 一区二区高清| 久久久青草青青国产亚洲免观| 伊人成人在线视频| 欧美韩日亚洲| 午夜综合激情| 亚洲电影免费观看高清完整版在线 | 亚洲校园激情| 快she精品国产999| 最新日韩中文字幕| 国产精品久久久久久久电影| 欧美一激情一区二区三区| 欧美国产精品| 亚洲自拍偷拍网址| 一区二区三区在线高清| 欧美日韩亚洲系列| 欧美尤物巨大精品爽| 亚洲激情在线播放| 久久电影一区| 9久re热视频在线精品| 国产欧美va欧美va香蕉在| 久久综合中文色婷婷| 在线综合亚洲| 亚洲福利精品| 久久精品一区四区| 亚洲视频在线观看三级| 曰韩精品一区二区| 国产精品素人视频| 欧美人与性动交a欧美精品| 欧美一区国产在线| 99热这里只有精品8| 免费成人你懂的| 欧美在线视频一区| 亚洲视频久久| 亚洲精品国产精品国自产在线 | 99re视频这里只有精品| 国产亚洲精品久久久| 欧美四级电影网站| 免费成人激情视频| 久久福利一区| 性做久久久久久| 中文日韩电影网站| 亚洲精品国产日韩| 欧美大片免费| 另类春色校园亚洲| 久久精品一区中文字幕| 亚洲欧美文学| 亚洲一区二区三区四区中文 | 国产精品三级久久久久久电影| 免费一区二区三区| 久久婷婷av| 久久深夜福利免费观看| 欧美在线黄色| 欧美一区二区视频免费观看| 亚洲女人av| 亚洲欧美成人网| 亚洲欧美日韩成人| 亚洲一区二区免费在线| 亚洲视频久久| 亚洲一区二区四区| 亚洲欧美日韩人成在线播放| 亚洲欧美视频在线| 欧美一区深夜视频| 久久成人人人人精品欧| 久久国产视频网站| 久久久精品一区二区三区| 久久精品日产第一区二区| 欧美一区二区视频观看视频| 欧美中文字幕在线视频| 久久精品国产999大香线蕉| 久久久久久综合| 免费欧美在线| 欧美日韩在线视频观看| 国产精品女主播一区二区三区| 国产精品久久一卡二卡| 国产日韩欧美综合| 狠狠做深爱婷婷久久综合一区| 伊人久久综合| 一区二区三区四区蜜桃| 亚洲欧美国内爽妇网| 久久九九免费| 亚洲电影免费观看高清完整版在线 | 亚洲综合色丁香婷婷六月图片| 亚洲欧美在线免费观看| 久久夜色精品亚洲噜噜国产mv| 欧美成人精品福利| 日韩手机在线导航| 午夜在线视频观看日韩17c| 久久久久久高潮国产精品视| 欧美国产日韩精品免费观看| 国产精品福利在线观看| 国产一区二区剧情av在线| 亚洲国产高清自拍| 亚洲天堂偷拍| 女同性一区二区三区人了人一 | 亚洲天堂av在线免费| 欧美一区三区二区在线观看| 欧美成人精品一区二区三区| 一区二区高清| 久久综合色综合88| 国产精品久久久一区麻豆最新章节 | 国产精品久久77777| 精品99视频| 亚洲视频免费看| 欧美va日韩va| 午夜国产精品视频| 欧美激情视频一区二区三区免费| 国产精品日本| 一区二区三区免费在线观看| 久久综合久久综合九色| 亚洲少妇诱惑| 欧美国产视频在线观看| 黑人一区二区三区四区五区| 亚洲一区二区在线免费观看|