函式指標作為函式引數

2021-07-05 20:26:28 字數 919 閱讀 8538

先來看看普通的指標

如果有 int a

那麼可以定義乙個  int *p = &a

則p是乙個指向a的指標

定義指標用乙個比較粗淺的方法來說就是把原來的變數名換掉並且前面加星號,比如這裡就是把a換成p並且前面加星號,就定義了乙個可以指向a的指標

同理,如果要定義乙個指向函式的指標,那麼也只要把函式名做類似的處理即可

如定義乙個函式 void myfun(int x)

那麼只要定義 void (*funp)(int x) 即可定義乙個指標funp,這個指標是可以指向函式myfun的

同理,也可以用typedef來直接定義乙個這樣的型別

typedef void (*funtype)(int x)   這樣如果以後想定義乙個指向這種函式的指標,就可以直接  funtype p 來實現了

接下來就是要把這個函式指標作為某個函式的引數

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

void myfun1(int x);  

void myfun2(int x);

void myfun3(int x);

typedef void (*funtype)(int);

void callmyfun(funtype fp,int x);

int main()

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

void myfun1(int x)

void myfun2(int x)

void myfun3(int x)

這樣就可以分別呼叫三個函式。

指標作為函式引數

當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...

指標作為函式引數

臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...

指標作為函式引數,C語言指標作為函式引數詳解

include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...