在c語言中,乙個函式總是占用一段連續的記憶體區域,函式名就是該函式所佔記憶體區域的首位址。我們可以把函式的這個首位址(或稱入口位址)賦予乙個指標變數,使該指標變數指向該函式,然後通過指標變數就可以找到並呼叫這個函式。我們把這種指向函式的指標變數稱為函式指標變數。
函式指標變數定義的一般形式為:
datatype (*指標變數名)();
也可以如此定義:
typedef
void(*funtype)(int);
/*前加乙個typedef關鍵字,這樣就定義乙個名為funtype函式指標型別
而不是乙個funtype變數。
*形式同 typedef int* pint;
*/
資料型別表示被指函式的返回值的型別,(指標變數名)表示 後面的變數是指標變數,最後的空括號表示指標變數所指的是乙個函式
使用函式指標變數,可以通過引數指定呼叫函式呼叫相關的被呼叫函式.
如下例子:
#include
#include
typedef
void(*funtype)(int);
//前加乙個typedef關鍵字,這樣就定義乙個名為funtype函式指標型別,而不是乙個funtype變數。
//形式同 typedef int* pint;
void myfun(int x);
void hisfun(int x);
void herfun(int x);
void callfun(funtype fp,int x);
int main()
void callfun(funtype fp,int x)
void myfun(int x)
void hisfun(int x)
void herfun(int x)
更深入理解: 函式指標 (變數)
函式指標的宣告方法為 函式型別 標誌符 指標變數 名 形參列表 注意函式指標變數和 函式指標型別的區別 1 直接宣告乙個函式指標變數 類似struct型別的定義和宣告,放在一起 int func int x 宣告乙個函式 int f int x 宣告乙個函式指標 f func 將func函式的首位址...
函式指標變數
c語言作為一門面向過程的語言,那麼他的 塊一般是以函式為最小單位的,我們了解過棧幀之後都知道,也是有位址的,那麼存放 位址的變數就叫做函式指標變數。void test int main 這樣我們就可以使用函式指標p來呼叫這個函式,在這裡有一點比較特殊的地方,我們可以通過 解引用呼叫,也可以直接用指標...
作文 從指標變數到指標函式,路過函式指標
從最簡單的指標變數出發,比如int a 那麼a是乙個整形變數 現在int a 那麼a是乙個指標變數 指標a表達的是某個位址,它需要依託某個實實在在的東西 比如 typedef struct ringbuff t static ringbuff t ringbuff ringbuff t pringb...