C語言 指標函式和函式指標

2021-06-17 15:58:35 字數 1696 閱讀 9867

指標函式和函式指標

指標函式其實是乙個簡稱,是指帶指標的函式,它本質上是乙個函式,只是返回的是某種型別的指標。其定義的格式為:

型別識別符號 *函式名(參數列)

函式指標,從本質上說是乙個指標,只是它指向的不是一般的變數,而是乙個函式。因為每個函式都有乙個入口位址,函式指標指向的就是函式的入口位址。其定義的格式為:

型別識別符號 (*指標變數名)(形參列表)

接下來,通過分析下面的**加深讀者對指標函式和函式指標的理解。**的功能為在輸入字串中查詢指定的字元,如果查詢成功,則列印出所查詢字元後面的字串,如果查詢失敗,則給出提示資訊。

#include char* (*fun)(char *str,char *substr);  

void input(char *str,char *substr)

int strlen(char *str)

char* serch_str(char *str,char *serch_str)

return null;

}

void print(char* ret_str)

void main()

執行結果:

請輸入字串:never forget to say thanks!

請輸入要搜尋的字串:say

直接呼叫函式serch_str()

所搜尋字串之後的字元為: thanks!

請輸入字串:keep on going never give up!

請輸入要搜尋的字串:going

使用函式指標fun呼叫函式serch_str()

所搜尋字串之後的字元為:never give up!

分析上面的**,其中定義函式指標的形式為「char* (*fun)(char *str,char *substr);」,其所指向函式的返回型別為字元指標,所帶引數是兩個字元指標。在**的實現中有些需要注意的地方,如在strlen()函式中通過乙個結束符來判斷字串的長度,這是因為在輸入字串後面會自動新增乙個結束符。由執行結果可知,採用了兩種方式來實現函式的呼叫,一種是直接呼叫,即通過serch_str()函式來實現;另外一種是使用函式指標的方式來呼叫,即通過函式指標fun來實現,在呼叫之前,先使函式指標fun指向serch_str函式的入口位址,之後才能按照呼叫serch_str()函式的方式來使用。在使用函式指標的時候,需要注意函式指標要與它所指向的函式具有相同的型別,在用函式指標指向函式的時候是用「函式指標名=函式名」的方式來引用函式的。函式serch_str()是乙個指標函式,返回的是乙個字元指標。

C語言 指標函式和函式指標

1 指標函式是指帶指標的函式,本質上是乙個函式,函式返回值是某一型別的指標 定義 型別識別符號 函式名 參數列 int f int x,int y 它首先是乙個函式,只不過這個函式的返回值是乙個位址值,函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函...

C語言指標函式和函式指標區別

c和c 中經常會用到指標,和資料項一樣,函式也是有位址的,函式的位址是儲存其機器語言 的記憶體的開始位址。指標函式和函式指標經常會混淆,乙個是返回指標的函式,另乙個是指向函式的指標,下面就分別解釋指標函式和函式指標的區別。指標函式是返回指標的函式主體是函式,返回值是乙個指標 基本宣告形式 返回資料型...

C語言指標函式和函式指標區別

指標函式是返回指標的函式,主體是函式,返回值是乙個指標 基本宣告形式 返回資料型別 函式名 變數型別1,int fun int,int int fun int,int int fun int,int 這三種宣告都可以,第一種更加直觀 返回值是 int 型別 示例 includeint fun int...