形式1:返回型別(*函式名)(參數列)
[cpp]
view plain
copy
char(*pfun)(
int);
charglfun(
inta)
voidmain()
第一行定義了乙個指標變數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;
charglfun(
inta)
voidmain()
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(charop)
returnnull;
} //s_calc_func為函式,它的引數是 op,
//返回值為乙個擁有兩個int引數、返回型別為int的函式指標
int(*s_calc_func(
charop)) (
int,
int)
//終端使用者直接呼叫的函式,該函式接收兩個int整數,
//和乙個算術運算子,返回兩數的運算結果
intcalc(
inta,
intb,
charop)
voidmain()
參考:
typedef函式指標用法
形式1 返回型別 函式名 參數列 cpp view plain copy char pfun int char glfun inta void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型...
typedef函式指標用法
形式1 返回型別 函式名 參數列 cpp view plain copy print?char pfun int char glfun int a void main char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面...
typedef函式指標用法
形式1 返回型別 函式名 參數列 cpp view plain copy char pfun int char glfun inta void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型...