解釋:typedef void (*Fun) (void)


int   i;
定義了一個int類型的變量i;
而這樣
typedef   INT   int;
表示用戶本身定義了一個整型數據類型INT,實際上就等同於int
因此:INT   ii;
同上,表示定義了一個int類型的變量ii;
一樣的:
void   (*pFn)(void)  
定義了一個函數指針,該函數指針指向   相似於   void   Foo(void)函數的函數入口地址
而這樣:
typedef   void   (*Fun)(void)
表示用戶本身定義了一個函數指針數據類型

Fun   pf;
表示定義了一個函數指針pf,改函數指針指向相似於void   *pf(void)的函數  //leo

char *a="This is ";//這個在常量區分配一個空間,而後a指向此空間
char a[] = "This is"//這個在常量區分配一個空間,而後又在棧上分配一個空間,將常量區的內容複製過來,因此能夠修改


定義一個函數指針類型。
好比你有三個函數:
void hello(void) { printf("你好!"); }
void bye(void) { printf("再見!"); }
void ok(void) { printf("好的!"); }

typdef void (*funcptr)(void);
這樣就構造了一個通用的函數
你用的時候能夠這樣:
void speak(int id)
{
   funcptr words[3] = {&hello, &bye, &ok};
   funcptr fun = words[id];
   (*fun)();
}

這樣的話,若是speak(0)就會顯示「你好!」
speak(1)就會顯示「再見!」
speak(2)就會顯示「好的!」

用於處理參數和返回值的形式都同樣,可是功能不肯定的一組函數,能夠使用函數指針。

好比算術運算符,加、減、乘、除,均可以用typedef int (*calc)(int,int)表明,等等


函數

相關文章
相關標籤/搜索