函式指標:
在程式執行中.函式**是程式的演算法指令部分,他們和陣列一樣也需要占用儲存空間,都有相應的位址.可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式**的首位址,指向函式**首位址的指標變數稱為函式指標
1:函式指標定義
函式型別 (*指標變數名)(形參列表);
函式型別-------函式的返回型別,由於"()"的優先順序高於"*"所以指標變數名外的括號必不可少,後面的"形參列表"表示指標變數指向的函式所帶的引數列表
int (*f)(int x);
double (*ptr)(double x);
在定義函式指標時候要注意:
a:函式指標和它所指向的函式的引數個數和型別都應該是一致的
b:函式指標的型別和函式的返回值型別也是必須一致的
2:函式指標的賦值
函式名和陣列名一樣代表了函式**的首位址,因為在賦值時,直接將函式指標指向函式名就可以了;
例如: int func(int x);/*宣告乙個函式*/
int (*f)(int x);/*宣告乙個函式指標*/
f=func;/*將func函式的首位址賦給指標f*/
賦值時候函式func不帶括號,也不呆引數,由於func代表函式的首位址,因此經過賦值以後,指標f就指向函式func(x)的**的首位址
3:通過函式指標呼叫函式
函式指標是通過函式名和有關引數進行呼叫的
和其他指標變數相類似,如果指標變數pi是指向某整型變數i的指標,則*p等於他所指向的變數i;
如果pf是指向浮點型變數f的指標,則*pf就等價於它所指向的變數f.同樣的 *f是指向函式func(x)的指標,則*f就代表它所指向的函式func.所以在執行了f=func;以後(*f)和func代表同乙個函式.
由於函式指標指向了儲存區域的某個函式,因此可以通過函式指標呼叫響應的函式.用函式指標呼叫函式它應該執行下面三步:
1:要說明函式指標變數.int (*f)(int x);
2:要對函式指標變數賦值 f=func;func(x)必須要先有定義
3:要用(*指標變數)(參數列);呼叫函式 (*f)(x);(x必須先賦值)
例:#include
using namespace std;
int pos(int x)
void main()
void main()
cout<<"the max number is:"《理解的函式指標就是乙個指向函式首位址的指標 和指向記憶體的陣列字元是一樣的,就是需要理解清楚地是 我們一般認為的函式名就是乙個位址,這個位址是可以直接的賦值給指標的,因為指標就是儲存位址的地方,這樣就理解了
C 指標函式和函式指標
1 指標函式 1 基本概念 指標函式 顧名思義就是帶有指標的函式,即其本質是乙個函式,只不過這種函式返回的是乙個對應型別的位址。2 定義式 type func type type 如 int max int x,int y 3 例子詳解 cpp view plain copy 1.include 2...
c 指標函式和函式指標
函式指標與指標函式 1 函式指標 形式 返回型別 函式名 參數列 一種特殊的指標,它指向函式的入口 定義乙個函式指標p,只能指向返回值為int,形參為兩個int的函式 輸出結果 include stdafx.h include using namespace std int p int,int in...
C 函式指標與指標函式
函式指標 函式名本身代表著函式的位址,因此給函數指標賦值使可以不用加 符號 加也可以!void func int 定義乙個函式 void pf int 定義乙個函式指標 pf func 給函式指標賦值 int f x,y 其中x,y是形式引數,f是函式名,呼叫後返回乙個指向整型資料的位址指標。f x...