「不了解指標,就不了解c」指標是c/c++中重要的概念,也是c/c++區別於其他程式語言的特點之一。
毫不誇張地說,指標之於c的重要性相當於物件之於j**a的重要性一樣。
指標的基本概念和相關語法在此不做贅述,需要學習的人前往 c++指標|菜鳥教程 學習。
在這裡只介紹函式指標的概念和基本用法。
函式指標就是指向函式的指標,通過指標訪問函式。
與通過函式名訪問函式不同的是,通過指標訪問函式在很多時候可以簡化**,在一定程度上提高**可讀性。
例如,下面是乙個利用函式指標求積分的例子,利用積分的定義(無限分割,這裡用的是小矩形塊)來求積分:
//被積函式:calculate用於計算積分。一共三個引數。第乙個為函式指標func,指向待積分函式。二三引數為積分上(函式指標版)
double calculate_func(double(*func)(double x), double a, double
b)
return
sum;
}
//main函式:函式f(x) = x^2
double func_1(double
x)//
函式f(x) = x^3
double func_2(double
x)
int執行結果:main()
函式物件是c++特有的玩意(過載運算子是真的可以讓語言變騷,難怪j**a禁止過載運算子)。
函式本身是面向過程的產物,而c++允許過載運算子,在乙個類中過載了函式呼叫( )運算子後,這個類的物件就擁有函式的能力。
就像是連線了新舊兩個世界一樣,函式物件既可以用於封裝資料和方法,本身也可以作為函式被呼叫。
如果將函式指標也一起運用起來,會產生一些意想不到的效果。
還是上面那個求積分的例子,這次我們用函式物件來封裝一下,並且新增梯形分割方式:
/*main函式:函式物件版積分calculate用於計算積分。一共三個引數。第乙個為函式指標func,指向待積分函式。二三引數為積分上下限
*/class
calculate_class
return
sum;
}//梯形方式積分
double calcuastrape(double (*func)(double x), double a, double
b)
return
sum;
}public
:
//設定積分精度,t_dx為積分精度
void setprecision(double t_dx)
//預設構造、建構函式,t_dx為積分精度
calculate_class(double t_dx = 0.00001):dx(t_dx),sum(0
){}
//過載()運算子,建構函式物件
double
operator()(double (*func)(double x), double a, double b, int
method)
};
int執行結果:main()
函式物件calculate_class封裝了兩種求積分的基本方法:矩形分割法和梯形分割法,通過傳入整數method來選擇確定的積分方法,得到了乙個封裝的類。
如果有需要的話,還可以將被積函式全部封裝到乙個類myfuc中,將其中的所有函式宣告為static,完成簡單的封裝
classmain函式改為:myfunc
static
double func_2(double
x)
};
intmain()
c++真的是我學過的最騷氣也最讓人著迷的程式語言
C 中的函式指標和函式物件總結
原文 篇 一 函式指標 函式指標 是指向函式的指標變數,在c編譯時,每乙個函式都有乙個入口位址,那麼這個指向這個函式的函式指標便指向這個位址。函式指標的用途是很大的,主要有兩個作用 用作呼叫函式和做函式的引數。函式指標的宣告方法 資料型別標誌符 指標變數名 形參列表 一般函式的宣告為 int fun...
C 中的函式指標和函式物件總結
篇 一 函式指標 函式指標 是指向函式的指標變數,在c編譯時,每乙個函式都有乙個入口位址,那麼這個指向這個函式的函式指標便指向這個位址。函式指標的用途是很大的,主要有兩個作用 用作呼叫函式和做函式的引數。函式指標的宣告方法 資料型別標誌符 指標變數名 形參列表 一般函式的宣告為 int func i...
C 中的函式指標和函式物件總結
第一篇 函式指標 函式指標,表示的是乙個指標,它指向的是乙個函式,它含義是指指向函式的指標變數,在c編譯時,每乙個函式都有乙個入口位址,那麼這個指向這個函式的函式指標便指向這個位址。函式指標的用途是很大的,主要有兩個作用 1 用作呼叫函式 2 做函式的引數。函式指標的宣告方法 資料型別標誌符 指標變...