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

We do not always find visible happiness in proportion to visible virtue

夢幻白樺林

SHARE

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

公告

常用鏈接

留言簿(5)

搜索

  •  

最新隨筆

最新評論

閱讀排行榜

函數指針

      一個函數在編譯時被分配一個入口地址,將這個入口地址稱為函數的指針,可

      以用一個指針變量指向該函數指針,然后通過該變量來調用函數。

      有關說明:

      1、函數指針的聲明格式:

        函數返回值類型(*指針變量名)(參數類型列表)

         或者是:

         typedef 函數返回值類型?。ǎ羔樧兞棵▍殿愋土斜恚?span lang="EN-US">

            2、一個函數指針只能指向一種類型的函數,即具有相同的返回值和相同的參            

        數的函數

     ?。?、關于函數指針的加減運算沒有意義

       函數指針數組定義:

             函數定義:

             void fun1(void *p);

             void fun2(void *p);

             void fun3(void *p);

       函數指針數組定義:

       void(*fun[3])(void*);//typedef void(*pfun)(void*);pfun fun[3];

       指針賦值:

             fun[0] = fun1;

             fun[1] = fun2;

             fun[2] = fun3;

             函數調用:

       fun[0](&a);         //int a;

             fun[1](&b);         //int b;

             fun[3](&c);         //int c;

          聲明一個指向成員函數的指針

一個指向成員函數的指針包括成員函數的返回類型,帶::符號的類名稱,函數參數表。雖然這一語法看似復雜,其實它和普通的指針是一樣的。指向外部函數的指針可如下聲明:

void (*pf)(char *, const char *);
void strcpy(char * dest, const char * source);
pf=strcpy;

相應指向類A的成員函數的指針如下表示:

void (A::*pmf)(char *, const char *);

以上pmf是指向類A的一個成員函數的指針,傳遞兩個變量char *const char *,沒有返回值。注意星號前面的A::符號,這和前面的聲明是一致的。

賦值
為了給一個指向成員函數的指針賦值,可以采用成員函數名并再其前面加一個&的方式
使用typedef

你可以使用typedef來隱藏一些指向成員函數的復雜指針。例如,下面的代碼定義了一個類A中的成員函數的指針PMA,并傳遞char *const char *參數。

typedef void(A::*PMA)(char *, const char *);
PMA pmf= &A::strcat; // use a typedef to define a pointer to member

使用typedef特別有用,尤其是對于指向成員函數的數組指針。

       void類型的指針

void含義:

void是“無類型”,void*則為無類型指針,void*可以指向任何類型的數據。

void a;//此變量沒有任何實際意義,無法編譯通過“illegal use of type

void 的作用:

     1、對程序返回的限定

     2、對函數參數的限定

我們知道,如何指針p1p2的類型相同,那么我們可以直接在p1p2間賦值,如果不同,必須使用強制類型轉換。

如:float *p1;   int *p2;

若:p1 = p2; 編譯出錯:“can not covert from int* to float*

必須為:p1 = (float*)p2;

            void*不同,任何類型的指針都可以直接賦為它,不需要強制類型轉換:

            如:void *p1;   int *p2;

                可作:p1 =p2;

                無類型可以包容有類型,有類型不能包容無類型:

                必須為:p2 = (int*)p1;

            viod void*使用規則總結:

     如果函數沒有返回值,那么應聲明為void類型

C語言中,凡不加返回值類型限定的函數,就會被編譯器作為返回整型值處理。但是許多程序員卻誤以為其為void類型. 林銳博士《高質量C/C++編程》中提到:“C++語言有很嚴格的類型安全檢查,不允許上述情況(指函數不加類型聲明)發生。可是編譯器并不一定這么認定,譬如在Visual C++6.0中上述add函數的編譯無錯也無警告且運行正確,所以不能寄希望于編譯器會做嚴格的類型檢查。

因此,為了避免混亂,我們在編寫C/C++程序時,對于任何函數都必須一個不漏地指定其類型。如果函數沒有返回值,一定要聲明為void類型。這既是程序良好可讀性的需要,也是編程規范性的要求。另外,加上void類型聲明后,也可以發揮代碼的自注釋作用。代碼的自注釋即代碼能自己注釋自己。

             如果函數無參數,那么應聲明其參數為void

             小心使用void指針類型

                按照ANSI的標準,不能對void指針進行算法操作,即下列操作是不合法的:

                void *pvoid;

                pvoid ++;         //ansi錯誤

                pvoid += 1;        //ansi 錯誤

                ansi標準之所以這樣認定,是因為它堅持,進行算法操作的指針必須是確定知道其指向數據類型的大小的。

                GUNGUNs  Not  Unix)則不這么認為,它指定void*的算法操作與char*一致。因此在GUN編譯器中上述語句是正確的。

                在實際的程序中,為了迎合ansi標準,并提高程序的可移植性,我們可以這樣實現同樣功能的代碼:

                void *pvoid;

                (char*)pvoid++;

                (char*)pvoid += 1;

             如果函數的參數可以是任意類型指針,那么應聲明其參數為void *

                典型的如內存操作函數memcpymemset的函數原型分別為:

                void* memcpy(void *dest, const void *src, size_t len);

                void* memset(void *buffer,int c, size_t num);

                這樣,任何類型的指針都可以傳入memcpymemset中,這也真實地體現了內存操作函數的意義,因為它操作的對象僅僅是一片內存,而不論內存是什類型。

             void不能代表一個真實的變量

                void a; //錯誤

                function(void a); //錯誤

       this指針

《深入淺出MFC》中解釋:

 定義類CRect,定義兩個對象rect1、rect2,各有自己的m_color成員變量,但rect1.setcolorrect2.setcolor卻都是通往唯一的CRect::setcolor成員函數,那么CRect::setcolor如何處理不同對象的m_color?答案是由一個隱藏參數,名為this指針。當你調用:

rect1.setcolro(2);

rect2.setcolor(3);

時,編譯器實際上為你做出來一下的代碼:

CRect::setcolor(2,(CRect*)&rect1);

CRect::setcolor(3,(CRect*)&rect2);

多出來的參數,就是所謂的this指針。

class CRect

{

……

public:

  void setcolor(int color){m_color = color};

};

被編譯后,其實為:

class CRect

{

……

public:

  void setcolor(int color,(CRect*)this){this->m_color = color};

};

posted on 2007-06-03 15:07 colys 閱讀(1038) 評論(0)  編輯 收藏 引用 所屬分類: C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区精品在线| 久久久av毛片精品| 久久精品1区| 欧美1区视频| 久久久精品视频成人| 久久尤物电影视频在线观看| 久久精品国产亚洲一区二区三区| 亚洲一区二区在线播放| 欧美一区二区视频在线观看2020| 欧美亚洲在线视频| 久久久久综合网| 亚洲国产专区校园欧美| 99在线精品视频| 久久久蜜桃一区二区人| 欧美性猛片xxxx免费看久爱| 国产亚洲欧美一级| 99re66热这里只有精品3直播| 香蕉久久夜色精品| 亚洲精选一区二区| 久久精品国产99精品国产亚洲性色| 久久精品视频va| 国产精品午夜av在线| 欧美国产先锋| 久久精品亚洲一区二区| 欧美精品电影| 亚洲国产精品一区二区第一页| 亚洲男女自偷自拍图片另类| 欧美大片在线观看| 欧美中文在线免费| 国产婷婷色一区二区三区| 亚洲一区二区在线视频 | 久久国产黑丝| 国产精品久久久久久久浪潮网站 | 欧美mv日韩mv亚洲| 欧美一区影院| 国产精品国产一区二区| 99精品视频免费全部在线| 欧美成人福利视频| 久久久久久久一区二区| 国产日韩一区| 久久午夜视频| 麻豆freexxxx性91精品| 黄色日韩网站| 欧美激情五月| 欧美日韩成人一区二区| 99在线精品视频| 最近看过的日韩成人| 欧美日韩三级一区二区| 亚洲视频在线观看视频| 亚洲欧美日韩在线不卡| 亚洲国产精品传媒在线观看| 亚洲电影免费在线观看| 欧美成人自拍| 国产日韩av一区二区| 亚洲精华国产欧美| 国内外成人在线| 最新成人在线| 亚洲国产天堂网精品网站| 亚洲午夜精品久久久久久app| 国产精品自在线| 日韩午夜在线电影| 国产欧美精品| 欧美成人高清视频| 精品51国产黑色丝袜高跟鞋| 亚洲午夜av电影| 亚洲欧美在线视频观看| 欧美精品九九| 91久久中文| 一区在线免费| 久久午夜av| 欧美国产综合视频| 亚洲国产日韩一区| 欧美精品粉嫩高潮一区二区| 亚洲动漫精品| 亚洲最新视频在线| 国产精品成人国产乱一区 | 亚洲激情影视| 久久久综合网| 亚洲高清激情| 亚洲欧美一区二区三区久久 | 欧美日韩在线直播| 在线亚洲欧美| 久久天天狠狠| 亚洲激情婷婷| 国产精品色午夜在线观看| 亚洲一区二区毛片| 国产精品免费一区二区三区在线观看 | 在线免费观看日本一区| 欧美国产日韩在线观看| 欧美一区免费视频| 精品动漫3d一区二区三区免费| 久久精品国产99精品国产亚洲性色| 免费在线欧美黄色| 正在播放亚洲一区| 狠狠色伊人亚洲综合网站色| 免费永久网站黄欧美| 一区二区免费在线播放| 久久野战av| 亚洲男人影院| 亚洲精品九九| 亚洲成人影音| 国产美女在线精品免费观看| 老司机精品视频一区二区三区| 一区二区国产日产| 欧美成人情趣视频| 久久爱www久久做| 宅男精品视频| 在线亚洲欧美视频| 亚洲美女视频网| 亚洲精品欧美一区二区三区| 国产一区二区三区久久悠悠色av | 亚洲精品国精品久久99热| 噜噜噜久久亚洲精品国产品小说| 亚洲一区二区高清| 亚洲一区二区三区在线视频| 亚洲激情一区| 久久综合网色—综合色88| 亚洲综合首页| 久久精品国产亚洲aⅴ| 亚洲免费在线看| 欧美亚洲综合另类| 久久精品夜色噜噜亚洲a∨| 久热精品在线| 中文在线资源观看视频网站免费不卡| 亚洲精品视频在线播放| 国产一区视频在线观看免费| 亚洲成色www8888| 亚洲午夜一区二区三区| 久久久久在线观看| 亚洲美女中文字幕| 午夜精品久久久久久久蜜桃app| 久久偷看各类wc女厕嘘嘘偷窃| 欧美jizz19性欧美| 国产精品午夜视频| 亚洲毛片网站| 蜜臀久久99精品久久久久久9| 9i看片成人免费高清| 性做久久久久久免费观看欧美| 欧美精品日韩三级| 亚洲丁香婷深爱综合| 久久av资源网| 欧美一区二区大片| 国产精品久久毛片a| 一区二区三区成人精品| 欧美sm重口味系列视频在线观看| 亚洲欧美综合v| 国产欧美日韩亚洲| 欧美一级午夜免费电影| 一区二区三区导航| 国产伦精品免费视频| aa国产精品| 亚洲最新合集| 国产色视频一区| 久久久久久夜精品精品免费| 性欧美videos另类喷潮| 国产啪精品视频| 久久精品一区四区| 久久综合九色综合久99| 在线观看久久av| 1024亚洲| 麻豆精品视频| 老色鬼精品视频在线观看播放| 亚洲国产精品ⅴa在线观看| 欧美大片免费观看| 麻豆精品精品国产自在97香蕉| 亚洲国产成人久久| 亚洲激情一区| 一区在线影院| 亚洲日本va午夜在线影院| 国产精品视频一二| 久久久噜噜噜久久狠狠50岁| 欧美成人午夜剧场免费观看| 亚洲影院免费观看| 久久久精品五月天| 亚洲欧洲日产国产网站| 亚洲一区二区三区色| 亚洲精品久久久久久下一站| 亚洲女爱视频在线| av成人天堂| 免费久久久一本精品久久区| 久久精品国产在热久久| 免费日韩成人| 亚洲东热激情| 亚洲国产精品va在看黑人| 亚洲一区二区欧美| 在线视频一区观看| 欧美日韩另类丝袜其他| 亚洲国产成人久久| 国产精品中文字幕欧美| 一本不卡影院| 激情91久久| 亚洲综合色在线| 久久精品1区| 国产精品激情| 欧美成人嫩草网站| 亚洲国产精品久久91精品| 久久精品国产欧美亚洲人人爽| 美国十次了思思久久精品导航| 伊人成人在线| 欧美二区在线看|