形式1:返回型別(*函式名)(參數列)
char
(*pfun)
(int);
char
glfun
(int a)
void
main()
第一行定義了乙個指標變數pfun。首先我們根據前面提到的「形式1」認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型別。只有第一句我們還無法使用這個指標,因為我們還未對它進行賦值。
第二行定義了乙個函式glfun()。該函式正好是乙個以int為引數返回char的函式。我們要從指標的層次上理解函式——函式的函式名實際上就是乙個指標,函式名指向該函式的**在記憶體中的首位址
然後就是main()函式了,它的第一句您應該看得懂了——它將函式glfun的位址賦值給變數pfun。main()函式的第二句中「*pfun」顯然是取pfun所指向位址的內容,當然也就是取出了函式glfun()的內容,然後給定引數為2。
形式1:typedef 返回型別(*新型別)(參數列)
typedef
char
(*ptrfun)
(int);
ptrfun pfun;
char
glfun
(int a)
void
main()
typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int為引數並返回char型別。後面就可以像使用int,char一樣使用ptrfun了。
第二行的**便使用這個新型別定義了變數pfun,此時就可以像使用形式1一樣使用這個變數了。
#include
#include
typedef
int(
*fp_calc)
(int
,int);
//定義乙個函式指標型別
intadd
(int a,
int b)
intsub
(int a,
int b)
intmul
(int a,
int b)
intdiv
(int a,
int b)
//定義乙個函式,引數為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
(int a,
int b,
char op)
void
main()
C C 指標的概念及簡單應用
類似定義變數的形式,資料型別包含 int char float等 型別名 指標變數名 定義乙個變數value int value 150 定義乙個指標pv int pv value 注 定義指標時應對指標進行初始化,原則上不允許int pv 這樣的指標出現。如果沒有想好,可以將指標定義為空指標cha...
C C 的函式指標
病人 醫生,我折騰了許久,無法理解函式指標。中醫 能意識到自己不理解,不錯。那麼你說說你目前的理解。函式指標是什麼?病人 函式指標是指向函式的指標。中醫 那麼函式是什麼?病人 函式就是函式。中醫 不是指向函式的指標?病人 自然不是。中醫 那函式怎麼可以賦值給函式指標?難道int可以賦值給int 病人...
C C 函式指標,指標函式的用法,用處
先看函式指標 int func2 int x 宣告乙個函式 int q2 int x 宣告乙個函式指標 q2 func2 將func函式的首位址賦給指標f int c q2 3 3可以為任意實參 上面4句基本說明了函式指標的用法 函式指標是指向函式的指標,確切的說,是指向特定型別函式的指標 函式與函...