C 溫故知新 之 指標 函式指標變數 指標型函式

2021-09-07 21:36:05 字數 2075 閱讀 7113

猛一看還真有點糊糊;注意區別:

1、函式型指標:指函式返回

值的型別。

指標型函式:返回值是乙個

指標(即位址) 

2、int(*p)()和int *p() 是一樣嗎?為什麼?

int (*p)()是乙個變數說明,說明 p 是乙個指向函式入口的指標變數,該函式的返回值是整型量,(*p)的兩邊的括號不能少。-->函式型指標

int *p()則不是變數說明而是函式說明,說明 p 是乙個指標型函式,其返回值是乙個指向整型量的指標,*p 兩邊沒有括號。作為函式說明,在括號內最好寫入形式引數.-->指標型函式

在c語言中,乙個函式總是占用一段連續的記憶體區,而函式名就是該函式所佔記憶體區的首位址。我們可以把函式的這個首位址(或稱入口位址)賦予乙個指標變數,使該指標變數指向該函式。然後通過指標變數就可以找到並呼叫這個函式。我們把這種指向函式的指標變數稱為「函式指標變數」。

函式指標變數定義的一般形式為:

型別說明符  (*指標變數名)();

其中「型別說明符」表示被指函式的返回值的型別。 「(* 指標變數名)」表示「*」後面的變數是定義的指標變數。最後的空括號表示指標變數所指的是乙個函式。

例如:int (*p)();

p表示是乙個指向函式入口的指標變數,該函式的返回值(函式值)是整型。

eg:

main()

int selectmax(int a,int

b)

結果:

解釋:1、先定義函式指標變數,如後一程式中第 9 行 int (*pmax)();定義 pmax 為函式指標變數。

2、把被調函式的入口位址(函式名)賦予該函式指標變數,如程式中第 11 行 pmax=selectmax;

3、用函式指標變數形式呼叫函式,如程式第 14 行 z=(*pmax)(x,y);

呼叫函式的一般形式為:

(*指標變數名) (實參表)

4、使用函式指標變數還應注意以下兩點:

1、函式指標變數不能進行算術運算,這是與陣列指標變數不同的。陣列指標變數加減乙個整數可使指標移動指向後面或前面的陣列元素,而函式指標的移動是毫無意義的

2、函式呼叫中"(*指標變數名)"的兩邊的括號不可少,其中的*不應該理解為求值運算,在此處它只是一種表示符號

函式型別是指函式返回值是乙個的型別。在c語言中允許乙個函式的返回值是乙個指標(即位址),這種返回指標值的函式稱為指標型函式。

定義指標型函式的一般形式為:

型別說明符 *函式名(形參表)

其中函式名之前加了「*」號表明這是乙個指標型函式,即返回值是乙個指標。型別說明符表示了返回的指標值所指向的資料型別。

如: int *ap(int x,int y)

表示 ap 是乙個返回指標值的指標型函式,它返回的指標指向乙個整型變數。

eg:

main()

har *day_name(inti);

return (i<1||i>7?name[0

]:name[i]);

}

結果:

函式指標和指標函式注意區別:

函式指標 int (*p) ()

指標函式 int *p() 一般還有函式體 int *p(){……}

出處:

C 溫故知新 之 指標 函式指標變數 指標型函式

猛一看還真有點糊糊 注意區別 1 函式型指標 指函式返回 值的型別。指標型函式 返回值是乙個 指標 即位址 2 int p 和int p 是一樣嗎?為什麼?int p 是乙個變數說明,說明 p 是乙個指向函式入口的指標變數,該函式的返回值是整型量,p 的兩邊的括號不能少。函式型指標 int p 則不...

溫故知新之VUE

要想開始vue專案,第一步是搭建專案,詳情參見 最近重新看下 vue,當初學的時候筆記記得亂七八糟,對於乙個剛接觸mvvm的人來說,網上的文件看的也是雲裡霧裡,很多東西用起來也是生搬硬套,今天看到一篇文章寫的特別透徹,對vue有了更深刻透徹的理解,對於新手可以快速掌握更好的理解 我自己也做了乙個小小...

溫故知新,PHP函式篇

php 函式 在使用之前,先用函式檢測一下,是否已經載入了相應的模組 if extension loaded calendar 或者 if function exists 陣列函式array 陣列可以用 號來追加。array1 array array2 array 1 data result arr...