World Fodesijify z Szh searchssearcha Szh csearchs World e Szh r
h Szh os Naked a Fodesijify c Szh ldsearchesearchr Fodesijify hÒ
ÎÄÕ³ö´¦£ºlogs/3990457.html
1. º¯ÊýÖ¸Õë
Ò»°ãµÄº¯ÊýÖ¸Õë¿ÉÒÔÕâô¶¨Òå:
int(*func)(int,int);
±íʾһ¸öÖ¸Ïòº¬ÓÐÁ½¸öint²ÎÊý²¢ÇÒ·µ»ØÖµÊÇintÐÎʽµÄÈκÎÒ»¸öº¯ÊýÖ¸Õë. ¼ÙÈç´æÔÚÕâÑùµÄÒ»¸öº¯Êý:
int add2(int x,int y)
{}
ÄÇôÔÚʵ¼ÊʹÓÃÖ¸Õëfuncʱ¿ÉÒÔÕâÑùʵÏÖ:
func=&add2; //Ö¸Õ븳ֵ,»òÕßfunc=add2; add2Óë&add2ÒâÒåÏàͬ
printf("func(3,4)=%d\n",func(3,4));
ÊÂʵÉÏ,ΪÁË´úÂëµÄÒÆÖ²¿¼ÂÇ,Ò»°ãʹÓÃtypedef¶¨Ò庯ÊýÖ¸ÕëÀàÐÍ.
typedef int(*FUN)(int,int);
FUN func=&add2;
func();
2.½á¹¹ÌåÖаüº¬º¯ÊýÖ¸Õë
ÆäʵÔڽṹÌåÖÐ,Ò²¿ÉÒÔÏñÒ»°ã±äÁ¿Ò»Ñù,°üº¬º¯ÊýÖ¸Õë±äÁ¿.ÏÂÃæÊÇÒ»ÖÖ¼òµ¥µÄʵÏÖ.
#include "stdio.h"
struct DEMO
{};
int add2(int x,int y)
{}
void main()
{}
ÉÏÃæµÄÎļþ±£´æÎªmytest.c,ÔÚVC6.0ºÍgcc4ÖбàÒëͨ¹ý.
3.½á¹¹ÌåÖеĺ¯Êý
¼ÈÈ»C++ÔÚ½éÉÜÀàµÄʱºò˵¹ý,ÀàÊÇÈ¡´ú½á¹¹ÌåµÄ.¿É¼û½á¹¹ÌåµÄ¹¦Äܲ¢·ÇÎÒÃÇÆ½Ê±Óõ½µÄÕâô¼òµ¥,ûÓÐÌ«¶àÈËÖªµÀ½á¹¹ÌåÖÐÒ²¿ÉÒÔÓÐ×Ô¼ºµÄº¯Êý³ÉÔ±.
¾Ù¸öÀý×Ó:
#include "stdio.h"
struct DEMO
{}
void func()//Ò»°ãº¯Êý
{}
};
void main()
{}
±£´æÎªmytest1.c , VC6.0ºÍgcc±àÒë¶¼»á³ö´í. Õâ¿ÉÄÜ˵Ã÷±ê×¼CÊDz»Ö§³Ö½á¹¹Ìå°üÀ¨º¯Êý³ÉÔ±ÐÎʽµÄ(ÒòΪºó׺.cʹµÃVC»ògccÑ¡Ôñc±àÒëÆ÷). µ«ÊÇÈç¹û½«Îļþºó׺¸ÄΪ.cpp(Ò²¾ÍÊÇÑ¡Ôñc++±àÒë),¾Í²»ÔÙÓдíÎóÁË,µÃµ½½á¹û:
after init,m=33
function of struct.
Ò²¾ÍÊÇ˵,ÔÚC++ÖÐÔÊÐí½á¹¹Ìå°üº¬º¯Êý³ÉÔ±,¶ø±ê×¼C²»Ö§³Ö. ½øÒ»²½·¢ÏÖ,c++ÖÐÉõÖÁÔÊÐí½á¹¹ÌåÖк¬Óй¹Ô캯Êý¡¢ÖØÔØ¡¢public/privateµÈµÈ.ÕâÑù¿´À´£¬½á¹¹ÌåÕæµÄÓëÀàÔ½À´Ô½¿¿½üÏàËÆÁË!
C++À©³äÁ˽ṹÌåµÄ¹¦ÄÜ¡£µ«C++ÖÐΪÁ˽éÉÜÃæÏò¶ÔÏóµÄÀà,È´µ»¯ÁËͬÑù¾«²ÊµÄ½á¹¹Ìå¡£µ±ÎÒÃÇдһЩС³ÌÐò¶ø¾õµÃûÓбØÒªÈ¥¹¹ÔìÀàµÄʱºò£¬Ñ¡Ôñ½á¹¹Ìåȷʵ»á·½±ãºÜ¶à.
========================================
º¯ÊýÖ¸ÕëµÄ˵Ã÷:
ÒÑÖªº¯ÊýÖ¸Õ붨ÒåÉùÃ÷ float (*h)();
ÔõôÀí½âÓï¾ä? (*(void (*)())0)();
ÕâÊÇÒ»¸öCÓï¾ä£¬±íʾ(*p)(); ÆäÖÐpÖ¸Ïò0, 0±»Ç¿ÖÆ×ª»»³É(void (*)())¸ñʽ¡£
»òÕßÓÃtypedef½«ÉÏÃæÊ½×Ó·Ö³ÉÁ½²½:
typedef void (*pFUNC)(); //pFUNC±íʾһÖÖº¯ÊýÖ¸ÕëÀàÐÍ,ÕâÑùµÄº¯Êýʽvoid fun()ÐÎʽ.
(*(pFunc)0)();
¶ÔÓÚÕâÒ»µã£¬ÔÚunix±à³Ìsignal·½ÃæÓõ½¹ý£¬ÈçÏÂ:
signalº¯ÊýÔÐÍ: void (*signal(int signo,void (*func)(int)))(int);
ÆäµÚ¶þ¸ö²ÎÊýfuncÊÇÒ»¸övoidÐͺ¯ÊýÖ¸Õë(¸Ãº¯Êý²ÎÊýΪint)£¬²¢ÇÒ·µ»ØÒ»¸övoidÐͺ¯ÊýÖ¸Õë(¸Ãº¯Êý²ÎÊýΪint),¼ò»¯Õâ¸ö¶¨Ò壬 ¿ÉÒÔtypedef void Sigfunc(int); È»ºósignalº¯ÊýÔÐÎдΪ Sigfunc* signal(int,Sigfunc*);
Èý¸ö³£Á¿ÓÃÓÚÌæ´úÕâÑùµÄÖ¸Õë¡£¶¨ÒåÈçÏÂ:
#define SIG_ERR (void (*)())-1
#define SIG_DFL (void (*)())0
#define SIG_IGN (void (*)())1
º¯ÊýÓ¦ÓÃ
if(signal(SIGUSR1,sig_func)==SIG_ERR)
err_sys("can't catch SIGUSR1");