在c語言中,函式名代表函式的入口位址。可以定義乙個指標變數,接收函式的入口位址,讓它指向函式,這就是指向函式的指標,也稱函式指標。通過函式指標可以呼叫函式,它還可以作為函式的引數。
函式指標的定義
函式指標定義的一般格式為:
型別名 (*變數名) (引數型別表);
型別名指定函式返回值的型別,變數名是指向函式的指標變數的名稱。例如:
int
(*funptr)
(int
,int
);
定義了乙個函式指標funptr
,它可以指向有兩個整型引數且返回值型別為int的函式。
通過函式指標呼叫函式
在使用函式指標之前,要先給它賦值。賦值時,將乙個函式名賦給函式指標,但該函式必須已經定義或宣告,且函式返回值的型別和函式指標要一致。
假設函式fun(x, y)
已經定義,它有兩個整型引數且返回乙個整型變數,則funptr=fun;
將函式fun()
的入口位址賦給funptr
,funptr
指向fun()
。
呼叫該函式除了直接使用函式名呼叫(例如使用fun(3,5)
),還能通過函式指標呼叫。通過函式指標呼叫函式的一般形式為:
(*函式指標名) (參數列);
例如上述舉例可以寫成(*funptr) (3, 5);
函式指標作為函式的引數
編寫函式calc(f, a, b)
,用梯形公式求函式
在[a, b]
上的數值積分。
公式:calc()是乙個通用函式,形參包括函式指標和積分區間上下限引數。
double
calc
(double
(*funp)
(double),
double a,
double b)
;
程式實現:
#include
#include
double
calc
(double
(*funp)
(double),
double a,
double b)
;doublef1(
double x),f2
(double x)
;int
main()
double
calc
(double
(*funp)
(double),
double a,
double b)
doublef1(
double x)
doublef2(
double x)
C語言 指向函式的指標
1 函式型別 函式指標變數 指向函式的入口位址 乙個函式是若干語句的集合 經編譯後儲存在函式 儲存區 並占有一片連續的儲存空間 對函式指標只能用函式名賦值而無其他運算 include stdio.h 23 intmax intx inty 45 intmain 617 18int max intx ...
C語言指向函式的指標
定義形式 型別 指標變數名 引數列表 例如 int p int i,int j 在這裡 int是函式的返回型別,p是指向函式的指標,int i,int j 是函式的引數 注意 int f int i,int j int p int i,int j 前者是返回值是指標的函式 後者是乙個指向函式的指標。...
C語言 指向函式的指標
c語言程式在編譯後,每個函式都有乙個首位址 也就是函式第一條指令的位址 這個位址稱為函式的指標。可以定義指向函式的指標變數,使用指標變數間接呼叫函式。先用乙個簡單的程式來說明 include float max float a,float b float min float a,float b ma...