欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
c/c++中函數指針的含義 [c/c++]--02
C/C++中函數指針的含義出處:PConline
[ 2005-03-04 10:16:51 ] 作者:管寧 責任編輯:xietaoming
-

  函數指針同樣是可以作為參數傳遞給函數的,下面我們看個(gè)例子,仔細閱讀你將會(huì )發(fā)現它的用處,稍加推理可以很方便我們進(jìn)行一些復雜的編程工作。

//-------------------該例以上一個(gè)例子作為基礎稍加了修改----------------------------- 
#include <iostream>   
#include <string>   
using namespace std;   
   
int test(int);   
 
int test2(int (*ra)(int),int); 
 
void main(int argc,charargv[])     
{   
    cout<<test<<endl; 
    typedef int (*fp)(int);   
    fp fpi; 
    fpi=test;//fpi賦予test 函數的內存地址 
 
    cout<<test2(fpi,1)<<endl;//這里調用test2函數的時(shí)候,這里把fpi所存儲的函數地址(test的函數地址)傳遞了給test2的第一個(gè)形參 
    cin.get(); 
}   
   
int test(int a) 
{   
    return a-1; 

 
int test2(int (*ra)(int),int b)//這里定義了一個(gè)名字為ra的函數指針 

    int c=ra(10)+b;//在調用之后,ra已經(jīng)指向fpi所指向的函數地址即test函數 
    return c; 
}

  利用函數指針,我們可以構成指針數組,更明確點(diǎn)的說(shuō)法是構成指向函數的指針數組,這么說(shuō)可能就容易理解的多了。

#include <iostream>   
#include <string>   
using namespace std; 
 
void t1(){cout<<"test1";} 
void t2(){cout<<"test2";} 
void t3(){cout<<"test3";} 
void main(int argc,charargv[])     

    void* a[]={t1,t2,t3}; 
    cout<<"比較t1()的內存地址和數組a[0]所存儲的地址是否一致"<<t1<<"|"<<a[0]<<endl; 
 
    cout<<a[0]();//錯誤!指針數組是不能利用數組下標操作調用函數的 
 
    typedef void (*fp)();//自定義一個(gè)函數指針類(lèi)型 
    fp b[]={t1,t2,t3}; //利用自定義類(lèi)型fp把b[]定義趁一個(gè)指向函數的指針數組 
    b[0]();//現在利用指向函數的指針數組進(jìn)行下標操作就可以進(jìn)行函數的間接調用了; 
    cin.get(); 
}

  仔細看上面的例子可能不用我多說(shuō)大家也會(huì )知道是怎么一會(huì )事情了,最后我們做一個(gè)重點(diǎn)小結,只要記住這一點(diǎn),對于理解利用函數指針構成數組進(jìn)行函數間接調用就很容易了!

void* a[]={t1,t2,t3};
cout<<"比較t1()的內存地址和數組a[0]所存儲的地址是否一致"<<t1<<"|"<<a[0]<<endl;

cout<<a[0]();//錯誤!指針數組是不能利用數組下標操作調用函數的

  上面的這一小段中的錯誤行,為什么不能這么調用呢?

  前一篇教程我們已經(jīng)說(shuō)的很清楚了,不過(guò)在這里我們還是復習一下概念,指針數組元素所保存的只是一個(gè)內存地址,既然只是個(gè)內存地址就不可能進(jìn)行a[0]()這樣地址帶括號的操作,而函數指針不同它是一個(gè)例外,函數指針只所以這么叫它就是因為它是指向函數指向內存的代碼區的指針,它被系統授予允許與()括號操作的權利,進(jìn)行間接的函數調用,既然函數指針允許這么操作,那么被定義成函數指針的數組就一定是可以一樣的操作的。

[上一頁(yè)] [1] [2]
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
【c++】指針參數是如何傳遞內存的
C/C++中的結構體
數組傳參的問(wèn)題
如何理解數組作為函數參數時(shí),數組名就是指針?
指針數組,數組指針,以及函數指針,以及堆中的分配規則
指針數組,數組指針,指針函數,函數指針,二級指針詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久