函式指標作為某個函式的引數及定義函式指標

2021-06-03 17:15:41 字數 1580 閱讀 6224

一、 定義某一函式的指標型別:

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

我先給你乙個自定義資料型別的例子。

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

int main()

根據注釋,應該不難看懂吧!(雖然你可能很少這樣定義使用,但以後學習win32程式設計時會經常見到的。)

下面我們來看一下函式指標型別的定義及使用:(請與上對照!)

//自行包含標頭檔案

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

typedef void (*funtype)(int );   //這樣只是定義乙個函式指標型別

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

int main(int argc, char* argv)

void myfun(int x)  

看黑體部分:

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

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

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

這樣做法的好處是:

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

funtype funp2;

funtype funp3;

//……

二、 函式指標作為某個函式的引數

既然函式指標變數是乙個變數,當然也可以作為某個函式的引數來使用的。所以,你還應知道函式指標是如何作為某個函式的引數來傳遞使用的。

給你乙個例項:

要求:我要設計乙個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* argv)

void callmyfun(funtype fp,int x) //③. 引數fp的型別是funtype。

void myfun1(int x) // ①. 這是個有乙個引數的函式,以下兩個函式也相同

void myfun2(int x)  

void myfun3(int x)  

輸出結果:略

分析:(看我寫的注釋。你可按我注釋的①②③④⑤順序自行分析。)

函式指標作為某個函式的引數及定義函式指標

一 定義某一函式的指標型別 就像自定義資料型別一樣,我們也可以先定義乙個函式指標型別,然後再用這個型別來申明函式指標變數。我先給你乙個自定義資料型別的例子。typedef int pint 為int 型別定義了乙個pint的別名 int main 根據注釋,應該不難看懂吧!雖然你可能很少這樣定義使用...

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

以下 函式指標作為某個函式的引數 的乙個例程,test.cpp 函式指標作為某個函式的引數 include stdafx.h 我要設計乙個callmyfun函式,這個函式可以通過引數中的函式指標值不同來分別呼叫myfun1 myfun2 myfun3這三個函式 注 這三個函式的定義格式應相同 voi...

函式指標作為函式引數

先來看看普通的指標 如果有 int a 那麼可以定義乙個 int p a 則p是乙個指向a的指標 定義指標用乙個比較粗淺的方法來說就是把原來的變數名換掉並且前面加星號,比如這裡就是把a換成p並且前面加星號,就定義了乙個可以指向a的指標 同理,如果要定義乙個指向函式的指標,那麼也只要把函式名做類似的處...