暑假C 複習18之指向函式型別的指標

2021-08-27 02:20:37 字數 1270 閱讀 5187

函式指標式值指向函式而非指向物件的指標。像其他指標一樣,函式指標也指向某個特定的型別,函式型別有返回型別以及形參表確定,而與函式名無關。

bool (*pf) (const string ,const string &);

這個語句將pf申明為指向函式的指標,它所指向的函式帶有兩個const string&型別的形參和bool型別的返回值。

注意:*(pf)兩側的圓括號是必須的。bool *pf (const string ,const string &);則表示定義乙個名為pf返回值為bool*的乙個函式。

其中主要有三個內容:

1,可以用typedef簡化函式指標的定義:

函式指標型別相當的冗長,使用typedef為指標型別定義同義詞。可將函式指標的使用大大簡化。

typedef bool (*cmp)(const string ,const string &);

該定義表示cmp是一種指向函式的指標型別的名字,該指標型別為「指向返回bool型別並帶有兩個const string&引數的指標」。在要使用這種函式指標型別時,只需直接使用cmp即可。不必每次都把整個型別宣告全部寫出來。

2,指向函式的指標的初始化和賦值。

在引用函式名但是又沒有呼叫該函式時,函式名將被自動解釋為指向函式的指標。假設有函式:

bool lcom(const string ,const string &);

除了用作函式呼叫左運算元以外,對lccom的任何使用都被解釋為如下型別的指標:

bool (*)(const string ,const string &);

可使用函式名對函式指標做初始化或賦值:

cmp pf1=0;

cmp pf2=lcom;

pf1=lcom;

pf2=pf1;

此時,直接引用函式名等效於在函式名上應用取位址操作符;

cmp pf1=lcom;

cmp pf1=&lcom;

注意:函式指標只能通過同型別的函式或函式指標或0值常量表示式進行初始化或賦值。

將函式初始化為0;表示該指標不指向任何函式。

3,通過指標呼叫函式

指向函式的指標可用於呼叫它所指向的函式。可以不需要使用接引用操作符。直接通過指標呼叫函式。

cmp pf=lcom;

lcom("hi","bye");

pf(''hi","bye")==(*pf)("hi","bye");

如果指向函式的指標沒有初始化,或具有0值,則該指標不能再函式呼叫中使用,只有當指標已經初始化,或被複製為指向某個函式,方能安全滴用來呼叫。

C 之函式複習

1.函式的定義 型別說明 函式名 引數列表 乙個程式只有乙個 main 函式,main 函式可以有引數,此引數為命令列引數。函式具有返回值和返回值型別,返回用 renturn return 的作用還有乙個是結束當前的函式的執行。2.函式的呼叫 函式的呼叫形式為 型別說明符 函式名 形參表 3.函式的...

C 複習之函式過載

1.什麼是函式過載?1 一組函式,其中函式名相同,引數列表的個數或者型別不同。2 一組函式要稱得上過載,一定先是處在同乙個作用域當中。3 const或volatile的時候,會對形參型別有影響 例如下面兩個函式產生的符號就是相同的 void fun int a void fun const int ...

C 指向函式的指標

c 函式 也和物件一樣,都是儲存在記憶體中的,所以函式也是有記憶體位址的。但是函式指標是不予許修改的。只可以有兩種操作 1.呼叫函式,2 獲取其位址。void error string s void efct string 確定函式指標的類別 void f 函式指標和一般指標不同,用和不用 操作都是...