C 指標函式和函式指標的用法和區別

2021-09-26 09:06:39 字數 1430 閱讀 5707

定義

指標函式,簡單的來說,就是乙個返回指標的函式,其本質是乙個函式,而該函式的返回值是乙個指標。

宣告格式為:型別識別符號 * 函式名(參數列)

int fun(int x,int y);//乙個普通函式,然後返回值是乙個 int 型別,是乙個數值。

int* fun(int x,int y);//在函式名前面多了乙個*號,而這個函式就是乙個指標函式。其返回值是乙個 int 型別的指標,是乙個位址。

注意:在呼叫指標函式時,需要乙個同型別的指標來接收其函式的返回值。

不過也可以將其返回值定義為 void*型別,在呼叫的時候強制轉換返回值為自己想要的型別

typedef struct _datadata;

//指標函式

data* f(int a,int b)

int main()

定義

函式指標,其本質是乙個指標變數,該指標指向這個函式。總結來說,函式指標就是指向函式的指標。

宣告格式:型別說明符 (*函式名) (引數)

int (*fun)(int x,int y);
賦值

函式指標是需要把乙個函式的位址賦值給它

fun = &function;

fun = function;//取位址運算子&不是必需的,因為乙個函式識別符號就表示了它的位址

呼叫函式指標

x = (*fun)();
應用

int add(int x,int y)

//函式指標

int (*fun)(int x,int y);

//賦值

fun = add;

//呼叫

cout << "(*fun)(1,2) = " << (*fun)(1,2) ;

//輸出結果

(*fun)(1,2) = 3

定義不同

指標函式本質是乙個函式,其返回值為指標。

函式指標本質是乙個指標,其指向乙個函式。

寫法不同

指標函式:int* fun(int x,int y);

函式指標:int (*fun)(int x,int y);

可以簡單粗暴的理解為,指標函式的*是屬於資料型別的,而函式指標的*號是屬於函式名的。

再簡單一點,可以這樣辨別兩者:函式名帶括號的就是函式指標,否則就是指標函式。

用法不同

參考上面

函式指標和指標函式用法和區別

指標函式,簡單的來說,就是乙個返回指標的函式,其本質是乙個函式,而該函式的返回值是乙個指標。宣告格式為 型別識別符號 函式名 參數列 這似乎並不難理解,再進一步描述一下。看看下面這個函式宣告 int fun int x,int y 這種函式應該都很熟悉,其實就是乙個函式,然後返回值是乙個 int 型...

函式指標和指標函式用法和區別

前言 函式指標和指標函式,在學習 c 語言的時候遇到這兩個東西簡直頭疼,當然還有更頭疼的,比如什麼函式指標函式 指標函式指標 陣列指標 指標陣列 函式指標陣列等等,描述越長其定義就越複雜,當然理解起來就越難,特別是剛開始學習這門語言的童鞋,估計碰到這些東西就已經要崩潰了,然後好不容易死記硬背下來應付...

函式指標和指標函式用法和區別

前言 函式指標和指標函式,在學習 c 語言的時候遇到這兩個東西簡直頭疼,當然還有更頭疼的,比如什麼函式指標函式 指標函式指標 陣列指標 指標陣列 函式指標陣列等等,描述越長其定義就越複雜,當然理解起來就越難,特別是剛開始學習這門語言的童鞋,估計碰到這些東西就已經要崩潰了,然後好不容易死記硬背下來應付...