»áÔ±£º ÃÜÂ룺 ¡¡Ãâ·Ñ×¢²á | Íü¼ÇÃÜÂë | »áÔ±µÇ¼ ÍøÒ³¹¦ÄÜ£º ¼ÓÈëÊÕ²Ø ÉèΪÊ×Ò³ ÍøÕ¾ËÑË÷  
¼¼ÊõÎĵµ > VCÎĵµ > ÆäËûÎĵµ
C/C++Öк¯ÊýÖ¸ÕëµÄº¬Òå
·¢±íÈÕÆÚ£º2005-03-04 17:21:32×÷Õߣº¹ ³ö´¦£ºPConline  

¡¡¡¡º¯Êý´æ·ÅÔÚÄÚ´æµÄ´úÂëÇøÓòÄÚ£¬ËüÃÇͬÑùÓеØÖ·£¬ÎÒÃÇÈçºÎÄÜ»ñµÃº¯ÊýµÄµØÖ·ÄØ£¿

¡¡¡¡Èç¹ûÎÒÃÇÓÐÒ»¸öint test(int a)µÄº¯Êý£¬ÄÇô£¬ËüµÄµØÖ·¾ÍÊǺ¯ÊýµÄÃû×Ö£¬ÕâÒ»µãÈçͬÊý×éÒ»Ñù£¬Êý×éµÄÃû×Ö¾ÍÊÇÊý×éµÄÆðʼµØÖ·¡£

¡¡¡¡¶¨ÒåÒ»¸öÖ¸Ïòº¯ÊýµÄÖ¸ÕëÓÃÈçϵÄÐÎʽ£¬ÒÔÉÏÃæµÄtest()ΪÀý£º

int (*fp)(int a);//ÕâÀï¾Í¶¨ÒåÁËÒ»¸öÖ¸Ïòº¯ÊýµÄÖ¸Õë

¡¡¡¡º¯ÊýÖ¸Õë²»Äܾø¶Ô²»ÄÜÖ¸Ïò²»Í¬ÀàÐÍ£¬»òÕßÊÇ´ø²»Í¬Ðβεĺ¯Êý£¬ÔÚ¶¨Ò庯ÊýÖ¸ÕëµÄʱºòÎÒÃǺÜÈÝÒ×·¸ÈçϵĴíÎó¡£

int *fp(int a);//ÕâÀïÊÇ´íÎóµÄ£¬ÒòΪ°´ÕÕ½áºÏÐÔºÍÓÅÏȼ¶À´¿´¾ÍÊÇÏȺÍ()½áºÏ£¬È»ºó±ä³ÉÁËÒ»¸ö·µ»ØÕûÐÎÖ¸ÕëµÄº¯ÊýÁË£¬¶ø²»ÊǺ¯ÊýÖ¸Õ룬ÕâÒ»µãÓÈÆäÐèҪעÒ⣡

¡¡¡¡ÏÂÃæÎÒÃÇÀ´¿´Ò»¸ö¾ßÌåµÄÀý×Ó£º

#include <iostream
#include <string
using namespace std; 
 
int test(int a); 
 
void main(int argc,charargv[])   

    cout<<test<<endl;//ÏÔʾº¯ÊýµØÖ· 
    int (*fp)(int a); 
    fp=test;//½«º¯ÊýtestµÄµØÖ·¸³¸øº¯ÊýѧָÕëfp 
    cout<<fp(5)<<"|"<<(*fp)(10)<<endl; 
//ÉÏÃæµÄÊä³öfp(5),ÕâÊDZê×¼c++µÄд·¨,(*fp)(10)ÕâÊǼæÈÝcÓïÑԵıê׼д·¨,Á½ÖÖͬÒâ,µ«×¢ÒâÇø·Ö,±ÜÃâдµÄ³ÌÐò²úÉúÒÆÖ²ÐÔÎÊÌâ! 
    cin.get(); 

 
int test(int a) 

    return a; 
}

¡¡¡¡typedef¶¨Òå¿ÉÒÔ¼ò»¯º¯ÊýÖ¸ÕëµÄ¶¨Ò壬ÔÚ¶¨ÒåÒ»¸öµÄʱºò¸Ð¾õ²»³öÀ´£¬µ«¶¨Òå¶àÁ˾ÍÖªµÀ·½±ãÁË£¬ÉÏÃæµÄ´úÂë¸Äд³ÉÈçϵÄÐÎʽ£º

#include <iostream
#include <string
using namespace std; 
 
int test(int a); 
 
void main(int argc,charargv[])   

    cout<<test<<endl; 
    typedef int (*fp)(int a);//×¢Òâ,ÕâÀï²»ÊÇÉúÃüº¯ÊýÖ¸Õë,¶øÊǶ¨ÒåÒ»¸öº¯ÊýÖ¸ÕëµÄÀàÐÍ,Õâ¸öÀàÐÍÊÇ×Ô¼º¶¨ÒåµÄ,ÀàÐÍÃûΪfp 
    fp fpi;//ÕâÀïÀûÓÃ×Ô¼º¶¨ÒåµÄÀàÐÍÃûfp¶¨ÒåÁËÒ»¸öfpiµÄº¯ÊýÖ¸Õë! 
    fpi=test; 
    cout<<fpi(5)<<"|"<<(*fpi)(10)<<endl; 
    cin.get(); 

 
int test(int a) 

    return a; 
}

¡¡¡¡º¯ÊýÖ¸ÕëͬÑùÊÇ¿ÉÒÔ×÷Ϊ²ÎÊý´«µÝ¸øº¯ÊýµÄ£¬ÏÂÃæÎÒÃÇ¿´¸öÀý×Ó£¬×ÐϸÔĶÁÄ㽫»á·¢ÏÖËüµÄÓô¦£¬ÉÔ¼ÓÍÆÀí¿ÉÒԺܷ½±ãÎÒÃǽøÐÐһЩ¸´Ôӵıà³Ì¹¤×÷¡£

//-------------------¸ÃÀýÒÔÉÏÒ»¸öÀý×Ó×÷Ϊ»ù´¡ÉÔ¼ÓÁËÐÞ¸Ä----------------------------- 
#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º¯ÊýµÄʱºò,ÕâÀï°ÑfpiËù´æ´¢µÄº¯ÊýµØÖ·(testµÄº¯ÊýµØÖ·)´«µÝÁ˸øtest2µÄµÚÒ»¸öÐβΠ
    cin.get(); 
}   
   
int test(int a) 
{   
    return a-1; 

 
int test2(int (*ra)(int),int b)//ÕâÀﶨÒåÁËÒ»¸öÃû×ÖΪraµÄº¯ÊýÖ¸Õë 

    int c=ra(10)+b;//ÔÚµ÷ÓÃÖ®ºó,raÒѾ­Ö¸ÏòfpiËùÖ¸ÏòµÄº¯ÊýµØÖ·¼´testº¯Êý 
    return c; 
}

¡¡¡¡ÀûÓú¯ÊýÖ¸Õ룬ÎÒÃÇ¿ÉÒÔ¹¹³ÉÖ¸ÕëÊý×飬¸üÃ÷È·µãµÄ˵·¨Êǹ¹³ÉÖ¸Ïòº¯ÊýµÄÖ¸ÕëÊý×飬Õâô˵¿ÉÄܾÍÈÝÒ×Àí½âµÄ¶àÁË¡£

#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]();//´íÎó!Ö¸ÕëÊý×éÊDz»ÄÜÀûÓÃÊý×éϱê²Ù×÷µ÷Óú¯ÊýµÄ 
 
    typedef void (*fp)();//×Ô¶¨ÒåÒ»¸öº¯ÊýÖ¸ÕëÀàÐÍ 
    fp b[]={t1,t2,t3}; //ÀûÓÃ×Ô¶¨ÒåÀàÐÍfp°Ñb[]¶¨Òå³ÃÒ»¸öÖ¸Ïòº¯ÊýµÄÖ¸ÕëÊý×é 
    b[0]();//ÏÖÔÚÀûÓÃÖ¸Ïòº¯ÊýµÄÖ¸ÕëÊý×é½øÐÐϱê²Ù×÷¾Í¿ÉÒÔ½øÐк¯ÊýµÄ¼ä½Óµ÷ÓÃÁË; 
    cin.get(); 
}

¡¡¡¡×Ðϸ¿´ÉÏÃæµÄÀý×Ó¿ÉÄܲ»ÓÃÎÒ¶à˵´ó¼ÒÒ²»áÖªµÀÊÇÔõôһ»áÊÂÇéÁË,×îºóÎÒÃÇ×öÒ»¸öÖصãС½á,Ö»Òª¼ÇסÕâÒ»µã,¶ÔÓÚÀí½âÀûÓú¯ÊýÖ¸Õë¹¹³ÉÊý×é½øÐк¯Êý¼ä½Óµ÷ÓþͺÜÈÝÒ×ÁË!

void* a[]={t1,t2,t3};
cout<<"±È½Ït1()µÄÄÚ´æµØÖ·ºÍÊý×éa[0]Ëù´æ´¢µÄµØÖ·ÊÇ·ñÒ»ÖÂ"<<t1<<"|"<<a[0]<<endl;

cout<<a[0]();//´íÎó!Ö¸ÕëÊý×éÊDz»ÄÜÀûÓÃÊý×éϱê²Ù×÷µ÷Óú¯ÊýµÄ


¡¡¡¡ÉÏÃæµÄÕâһС¶ÎÖеĴíÎóÐУ¬ÎªÊ²Ã´²»ÄÜÕâôµ÷ÓÃÄØ£¿

¡¡¡¡Ç°Ò»Æª½Ì³ÌÎÒÃÇÒѾ­ËµµÄºÜÇå³þÁË£¬²»¹ýÔÚÕâÀïÎÒÃÇ»¹ÊǸ´Ï°Ò»Ï¸ÅÄָÕëÊý×éÔªËØËù±£´æµÄÖ»ÊÇÒ»¸öÄÚ´æµØÖ·£¬¼ÈȻֻÊǸöÄÚ´æµØÖ·¾Í²»¿ÉÄܽøÐÐa[0]()ÕâÑùµØÖ·´øÀ¨ºÅµÄ²Ù×÷£¬¶øº¯ÊýÖ¸Õ벻ͬËüÊÇÒ»¸öÀýÍ⣬º¯ÊýÖ¸ÕëÖ»ËùÒÔÕâô½ÐËü¾ÍÊÇÒòΪËüÊÇÖ¸Ïòº¯ÊýÖ¸ÏòÄÚ´æµÄ´úÂëÇøµÄÖ¸Õ룬Ëü±»ÏµÍ³ÊÚÓèÔÊÐíÓë()À¨ºÅ²Ù×÷µÄȨÀû£¬½øÐмä½ÓµÄº¯Êýµ÷Ó㬼ÈÈ»º¯ÊýÖ¸ÕëÔÊÐíÕâô²Ù×÷£¬ÄÇô±»¶¨Òå³Éº¯ÊýÖ¸ÕëµÄÊý×é¾ÍÒ»¶¨ÊÇ¿ÉÒÔÒ»ÑùµÄ²Ù×÷µÄ¡£

 

¡¾·µ»Ø¶¥²¿¡¿ ¡¾´òÓ¡±¾Ò³¡¿ ¡¾¹Ø±Õ´°¿Ú¡¿

¹ØÓÚÎÒÃÇ / ¸øÎÒÁôÑÔ / °æȨ¾Ù±¨ / Òâ¼û½¨Òé / ÍøÕ¾±à³ÌQQȺ   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net ¼ÓÔØʱ¼ä 0.00369