**:
typedef函式指標的用法(c++)
**簡化, 促進跨平台開發的目的.
typedef 行為有點像 #define 巨集,用其實際型別替代同義字。
不同點:typedef 在編譯時被解釋,因此讓編譯器來應付超越預處理器能力的文字替換。
用法一:
typedef
int(*myfun)(int, int);
這種用法一般用在給函式定義別名的時候
上面的例子定義myfun是乙個函式指標, 函式型別是帶兩個int 引數, 返回乙個int
在分析這種形式的定義的時候可以用下面的方法:
先去掉typedef 和別名,剩下的就是原變數的型別.
去掉typedef和myfun以後就剩:
int (*)(int, int)
用法二:
typedef給變數型別定義乙個別名.
typedefstructmy_type;
這裡把乙個未命名結構直接取了乙個叫my_type的別名, 這樣如果你想定義結構的例項的時候就可以這樣:
my_type tmp;
第二種用法:typedef原變數型別別名
typedef補充內容:
例如: typedef int (*pf) (const char *, const char *);
這個宣告引入了pf 型別作為函式指標的同義字,該函式有兩個 const char * 型別的引數以及乙個 int 型別的返回值。
簡單的函式指標的用法
//形式1:返回型別(*函式名)(參數列)
char(*pfun)(int);
char glfun(int a)
void main()
第一行定義了乙個指標變數pfun.它是乙個指向某種函式的指標,這種函式引數是乙個int型別,返回值是char型別。只有第一句我們還無法使用這個指標,因為我們還未對它進行賦值。
第二行定義了乙個函式glfun().該函式正好是乙個以int為引數返回char的函式。我們要從指標的層次上理解函式-函式的函式名實際上就是乙個指標,函式名指向該函式的**在記憶體中的首位址。
使用typedef更直接
typedef
char(*ptrfun)(int)
ptrfun pfun;
char glfun(int a)
void main()
typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int為引數並返回char型別。
//下面是個例子:
//在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
C 函式指標的用法
c語言函式指標的定義形式 返回型別 函式指標名稱 引數型別,引數型別,引數型別,c 函式指標的定義形式 返回型別 類名稱 函式成員名稱 引數型別,引數型別,引數型別,c語言函式指標使用舉例 include include int fun1 printf this is fun1 call n ret...
c語言函式指標的用法
隨說做了有一段時間的c了,但盡然沒有搞明白函式指標的用法,見到了也沒有好好研究,今天終於有時間了,在網上搜了一下,終於弄懂了.原來就是定義了乙個指標變數,只不過形式有點怪罷了.其實還是當成指標用就行了 一般有兩種用法 1定義函式指標 int functionpoint int,int 這只是定義了乙...
typedef函式指標的用法 C
簡化 促進跨平台開發的目的.typedef 行為有點像 define 巨集,用其實際型別替代同義字。不同點 typedef 在編譯時被解釋 因此讓編譯器來應付超越預處理器能力的文字替換 用法一 typedef int myfun int,int 這種用法一般用在給函式定義別名 的時候上面的例子定義m...