C 中的函式指標2(作為函式形參使用)

2021-10-23 02:32:54 字數 922 閱讀 2537

在《c++中函式引數型別為指標的指標》

中提到,在c++中,每次呼叫函式時都會重新建立它的形參,並用傳入的實參對形參進行初始化。因此,不能用函式當做其他函式的形參,因為在函式內部無法建立函式的副本。而函式的指標可以作為其他函式的引數,指標是可以在函式內部進行複製的。

bool (*fp)(const string&);

void userfp(const string& s1, bool (*myfp)(const string&))

以上**中,定義了函式指標fp,該指標指向乙個返回值是bool型別,有乙個const string&形參的函式;另外還定義了乙個具有函式指標作為形參的函式userfp。

除了使用解引用符號來定義函式指標的形參外,還可以使用如下方式定義:

void userfp(const string& s1, bool myfp(const string&));
以上兩種定義方式等價。

可以將函式指標或者函式名作為函式的實參。

bool showinfo(const string& s1)

fp = showinfo;

userfp("hello world", fp);

在以上**中,定義了showinfo函式,該函式的作用是輸出其形參;之後將指標fp指向showinfo函式,最後將fp作為userfp()函式的實參。執行程式,會列印出「hello world」的資訊。

將函式名作為乙個值使用時,該函式名自動轉換為函式指標。

userfp("hello world", showinfo);
以上**將函式名作為userfp的實參,此時showinfo自動轉換為指向該函式的指標。執行程式,會列印出「hello world」的資訊。

指標作為函式形參

先來看兩個程式 程式1 include void fun int p int main void 輸出為 程式2 include void fun int p int main void 輸出為 對於程式2,不難理解 程式1,明明改變了p的指向了,為什麼還是輸出1呢?其實問題的關鍵不是指標作為形參的...

C 中函式作為形參傳遞

規定 沒有括號的函式名被認為是乙個指向該函式的函式指標 如 void add 這裡的add就是指向該函式的指標 語法 函式返回值的型別 作為指標的函式名 該函式的引數 如 void visit int a,int b 如果有個函式swep要呼叫某個函式,那麼 swep void visit int ...

C C 指標作為函式形參注意點

函式形參是指標變數,直接對其賦值 指標相互賦值 只是改變了它的指向,原先傳入的指標指向的內容並沒改變 若要想改動其指向的值,需要通過memcpy或通過指標呼叫賦值 include include include include include include include using namesp...