形式1:返回型別(*函式名)(參數列)
[cpp]view plain
copy
char
(*pfun)(
int);
char
glfun(
inta)
void
main()
第一行定義了乙個指標變數pfun。首先我們根據前面提到的「形式1」認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型別。只有第一句我們還無法使用這個指標,因為我們還未對它進行賦值。
第二行定義了乙個函式glfun()。該函式正好是乙個以int為引數返回char的函式。我們要從指標的層次上理解函式——函式的函式名實際上就是乙個指標,函式名指向該函式的**在記憶體中的首位址
然後就是main()函式了,它的第一句您應該看得懂了——它將函式glfun的位址賦值給變數pfun。main()函式的第二句中「*pfun」顯然是取pfun所指向位址的內容,當然也就是取出了函式glfun()的內容,然後給定引數為2。
形式1:typedef 返回型別(*新型別)(參數列)
[cpp]view plain
copy
typedef
char
(*ptrfun)(
int);
ptrfun pfun;
char
glfun(
inta)
void
main()
typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int為引數並返回char型別。後面就可以像使用int,char一樣使用ptrfun了。
第二行的**便使用這個新型別定義了變數pfun,此時就可以像使用形式1一樣使用這個變數了。
[cpp]view plain
copy
#include
#include
typedef
int(*fp_calc)(
int,
int);
//定義乙個函式指標型別
intadd(
inta,
intb)
intsub(
inta,
intb)
intmul(
inta,
intb)
intdiv(
inta,
intb)
//定義乙個函式,引數為op,返回乙個指標,該指標型別為擁有兩個int引數、
//返回型別為int的函式指標。它的作用是根據操作符返回相應函式的位址
fp_calc calc_func(char
op)
return
null;
} //s_calc_func為函式,它的引數是 op,
//返回值為乙個擁有兩個int引數、返回型別為int的函式指標
int(*s_calc_func(
char
op)) (
int,
int)
//終端使用者直接呼叫的函式,該函式接收兩個int整數,
//和乙個算術運算子,返回兩數的運算結果
intcalc(
inta,
intb,
char
op)
void
main()
使用typedef定義函式指標
關於c 中函式指標的使用 包含對typedef用法的討論 一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,...
typedef 定義函式指標
typedef 返回型別 新型別 參數列 typedef char ptrfun int ptrfun pfun char glfun int a void main typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int...
C 使用 typedef 簡化函式指標定義
函式型別由返回型別和引數列表決定,與函式名無關 pf 指向乙個返回bool,且有兩個const string 型別引數的函式,pf 必須用括號括起來,否則會變成函式宣告 bool pf const string const string 由於函式指標型別容易變得笨拙,因此用 typedef 關鍵字簡...