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)表明,等等
函數