不懂函式指標與指標函式?看完這篇文章就能懂

2021-10-04 04:14:12 字數 2027 閱讀 6065

當學習陣列指標與指標陣列的時候很是讓人頭疼,到底是陣列還是指標?深入學習到函式的時候發現既然有函式指標指標函式這麼個更讓人頭疼的難以區分的問題。當去看一眼定義的時候,噼里啪啦一串又長又繞,真讓人崩潰!好不容易記住了結果沒過幾天就又忘記了,那麼今天你看的這篇文章就能理解並區別兩者。

簡單的來說,其本質是乙個指標,而該指標指向乙個函式。總結來說就是:指向函式的指標

int

(*fun)

(int x,

int y)

;//該函式指標fun是乙個指向返回值為整型,有兩個引數並且兩個引數的型別都是整型的函式

fun =

&max;

fun = max;

很多小夥伴想這為什麼不加取位址符(&)也可以?其實是每個函式的函式名就是該函式的入口位址

//求兩個整數的較大值和較小值

#include

intmax

(int a,

int b)

intmin

(int a,

int b)

int(

*fun)

(int m,

int n)

;//宣告乙個函式指標,該指標指向返回值為int型,有兩個引數都是int的函式

intmain()

執行結果如下:

這裡值得注意的是將乙個函式賦值給函式指標時可以不加取位址符(&),同時呼叫函式指標也有兩種不同的方式:

c =

fun(e, f)

;c =

(*fun)

(e, f)

;

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

int

*fun

(int a,

int b)

;// 返回值為int *,指標型別的返回值

當然上述宣告也可以寫成以下形式:

int*f

(int a,

int b)

;

讓指標標誌 * 與int緊貼在一起,而與函式名fun間隔開,這樣看起來就明了些了,fun是函式名,返回值型別是乙個int型別的指標。指標函式就是返回乙個位址給呼叫者。

#include

#include

int*

fun(

int a,

int b)

//宣告乙個指標函式

intmain()

執行結果如下:

通過函式指標得到乙個指向較大值的指標,也就是位址。將該位址給呼叫者(q),最終得到較大值。

類別主體

作用定義

指標函式

函式返回乙個指標

int* fun(int x,int y)

函式指標

指標指向乙個函式

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

或許記住會比較麻煩,可以這樣記。括號的優先順序高於星號(*),當括號裡有星號時就是乙個函式指標,沒有則是乙個指標函式,或者名字誰在後就是誰的本體(指標函式的本體是函式)當然想要深入了解還是得自己實踐自己總結!

最後如果文章對你有幫助,請送我乙個免費的贊唄!

函式指標與指標函式

指標函式 指標函式是指函式的返回值型別是乙個指標型別,即本質是乙個函式。我們知道函式都有返回型別 如果不返回值,則為無值型 只不過指標函式返回型別是某一型別的指標。其定義格式如下所示 返回型別識別符號 返回名稱 形式參數列 返回型別可以是任何基本型別和復合型別。返回指標的函式的用途十分廣泛。事實上,...

函式指標與指標函式

函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也占用儲存空間,都有相應的位址。可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式 的首位址,指向函式 首位址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...

函式指標與指標函式

函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也占用儲存空間,都有相應的位址。可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式 的首位址,指向函式 首位址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...