typedef 返回型別(*新型別)(參數列)
typedef char (*ptrfun)(int);
ptrfun pfun;
char glfun(int a)
void main()
typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int為引數並返回char型別。後面就可以像使用int,char一樣使用ptrfun了。
第二行的**便使用這個新型別定義了變數pfun,此時就可以像使用形式1一樣使用這個變數了。
在typedef的使用中,最麻煩的是指向函式的指標,如果沒有下面的函式,你知道下面這個表示式的定義以及如何使用它嗎?
int (*s_calc_func(char op))(int, int);
如果不知道,請看下面的程式,裡面有比較詳細的說明
// 定義四個函式
int add(int, int);
int sub(int, int);
int mul(int, int);
int div(int, int);
// 定義指向這類函式的指標
typedef int (*fp_calc)(int, int);
// 我先不介紹,大家能看懂下一行的內容嗎?
int (*s_calc_func(char op))(int, int);
// 下一行的內容與上一行完全相同,
// 定義乙個函式calc_func,它根據操作字元 op 返回指向相應的計算函式的指標
fp_calc calc_func(char op);
// 根據 op 返回相應的計算結果值
int calc(int a, int b, char op);
int add(int a, int b)
int sub(int a, int b)
int mul(int a, int b)
int div(int a, int b)
// 這個函式的用途與下乙個函式作業和呼叫方式的完全相同,
// 引數為op,而不是最後的兩個整形
int (*s_calc_func(char op)) (int, int)
fp_calc calc_func(char op)
return null;
} int calc(int a, int b, char op)
void test_fun()
執行結果
calc(100, 20, +) = 120
calc(100, 20, -) = 80
calc(100, 20, *) = 2000
calc(100, 20, /) = 5
typedef int (*pfunc)(int, int);
pfunc function1(char op);
// 上面的定義等同下面的定義:
// int (*function1(char op))(int, int);
// 以下**演示函式指標的用法
int add(int a, int b)
int (*function2(char op))(int, int)
pfunc function1(char op)
return null;
} int calc_func(int a, int b, char op)
// 計算a、b的和
int a = 100, b = 200;
int c = calc_func(a, b, '+');
使用typedef定義函式指標
形式1 返回型別 函式名 參數列 cpp view plain copy char pfun int char glfun inta void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型...
使用typedef定義函式指標
關於c 中函式指標的使用 包含對typedef用法的討論 一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,...
用typedef來定義函式指標
在網上搜尋函式指標,看到乙個例子。開始沒看懂,想放棄,可是轉念一想,這個用法遲早要弄懂的,現在多花點時間看懂它,好過以後碰到了要再花一倍時間來弄懂它。其實很多時候都是這樣,如果每次到難一點的內容,總想著下次我再來解決它,那就永遠也學不到東西。後面那個例子加了注釋,是我對這種用法的理解,希望對新手有所...