理解函式指標 二

2021-09-08 11:15:38 字數 1443 閱讀 3132

1.定義函式的指標型別:

就像自定義資料型別一樣,我們也可以先定義乙個函式指標型別,然後再用這個型別來申明函式指標變數。

乙個自定義資料型別的例子。

typedef int* pint; //

為int* 型別定義了乙個pint的別名

intmain()

看一下函式指標型別的定義及使用:

void myfun(int x); //

此處的申明也可寫成:void myfun( int );

typedef void (*funtype)(int ); //

這樣只是定義乙個函式指標型別

funtype funp; //

然後用funtype型別來申明全域性funp變數

int main(int argc, char*ar**)

void myfun(int

x)

首先,在void (*funtype)(int ); 前加了乙個typedef 。這樣只是定義乙個名為funtype函式指標型別,而不是乙個funtype變數。

然後,funtype funp;  這句就如pint px;一樣地申明乙個funp變數。

其它相同。整個程式完成了相同的事。

這樣做法的好處是:

有了funtype型別後,我們就可以同樣地、很方便地用funtype型別來申明多個同型別的函式指標變數了。如下:

funtype funp2;

funtype funp3;

//……

2.函式指標作為某個函式的引數

既然函式指標變數是乙個變數,當然也可以作為某個函式的引數來使用的。

例項:我要設計乙個callmyfun函式,這個函式可以通過引數中的函式指標值不同來分別呼叫myfun1、myfun2、myfun3這三個函式(注:這三個函式的定義格式應相同)。

void myfun1(int

x);

void myfun2(int

x);

void myfun3(int

x);

typedef

void (*funtype)(int ); //

②. 定義乙個函式指標型別funtype,與①函式型別一至

void callmyfun(funtype fp,int

x);int main(int argc, char*ar**)

void callmyfun(funtype fp,int x) //

③. 引數fp的型別是funtype。

void myfun1(int x) //

①. 這是個有乙個引數的函式,以下兩個函式也相同

void myfun2(int

x) void myfun3(int

x)

指標函式與函式指標理解

1 指標作為函式引數 跟傳址函式一樣的用法,形參的改變對應的實參有效。2 指標函式 指標最為函式的返回值。語法格式 資料型別 函式名 參數列 1 資料型別是函式返回的指標所指向資料的型別 2 函式名宣告了乙個指標型的函式 3 參數列是函式的形參列表 例如 int fun int a,int b 3 ...

理解指標 (二)

指標 理解指標 一 再次理解指標 理解更深刻 盡可能等定義了物件之後,再定義指向它的指標,確保指標初始化 先定義乙個變數p char c char型變數c 再定義乙個指標p char p char型指標p 初始化指標 p指向c p c 取變數c的位址賦值給指標p 賦值 c a 直接給變數c賦值字元a...

對比理解指標函式和函式指標

1 函式指標,可以這樣理解,它首先是乙個指標變數 一般佔4個位元組 只是它將要指向的資料型別為某種形式的函式。舉例如清單1 include int int func int a,int b char char func char a,char b int main void 例子輸出結果 int f...