函式指標的用法 C

2021-07-05 10:35:49 字數 2935 閱讀 4058

**:

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...