typedef 定義函式指標

2021-06-01 10:19:50 字數 1824 閱讀 7963

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來定義函式指標

在網上搜尋函式指標,看到乙個例子。開始沒看懂,想放棄,可是轉念一想,這個用法遲早要弄懂的,現在多花點時間看懂它,好過以後碰到了要再花一倍時間來弄懂它。其實很多時候都是這樣,如果每次到難一點的內容,總想著下次我再來解決它,那就永遠也學不到東西。後面那個例子加了注釋,是我對這種用法的理解,希望對新手有所...