C语言函数指针和指针函数的定义和调用
生活随笔
收集整理的這篇文章主要介紹了
C语言函数指针和指针函数的定义和调用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數指針和指針函數的定義和調用
確實第一次聽到函數指針和指針函數的時候感覺特別的繞。而且昨天要寫函數指針的時候一下子想不起來,自己寫篇文章和大家分享一下也讓我增加印象。
指針函數
指針是函數的返回類型 int* Fun(void); int*是一個int類型的指針,作為函數的返回值 聲明格式:類型說明符* 函數名(參數) int* Fun1(int data1); 返回值類型一定要是個指針函數指針
是代表函數入口地址的變量 函數本體: int Fun(int); 函數指針 in (*p)(int) = Fun; 聲明格式:類型說明符 (*函數名) (參數) int (*Fun1)(int);注意:類型說明符和參數的類型數量是根據你要保存的函數的格式一樣的
p保存了Fun函數的入口地址 函數調用上 int a = 5; p(5)等價于Fun(5)我先將函數Fun1的地址存入函數指針p中
然后分別調用Fun和p進行輸出,結果下圖這樣。
大家可以去試試。代碼我貼在下面
用途:
有人會問函數指針還要多開一個變量,還要去保存,寫成這樣干啥哦,浪費空間和時間,其實不然,函數指針在某一個函數中需要調用同類型的函數時很有用的,你只需要把你自己的函數名稱傳入即可,不然的話就是要做標志位參數去判斷了,這樣不僅更浪費空間而且代碼會變得很冗余的。
拋磚引玉一下:
先上運行結果
基礎運算代碼(就是簡單的加減乘除)
//加法 int sum(int data1, int data2) {printf("sum: %d + %d = %d\n", data1, data2, data1 + data2);return data1 + data2; } //減法 int sub(int data1, int data2) {printf("sub: %d - %d = %d\n", data1, data2, data1 - data2);return data1 - data2; } //乘法 int mul(int data1, int data2) {printf("mul: %d * %d = %d\n", data1, data2, data1 * data2);return data1 * data2; } //除法 int division(int data1, int data2) {printf("div: %d / %d = %d\n", data1, data2, data1 / data2);return data1 / data2; }運算整合代碼
int Fun( int (*p1)(int, int), //第一個運算int (*p2)(int, int), //第二個運算int (*p3)(int, int), //第三個運算int data1, int data2) {int res = 0;res = p3( p2( p1(data1, data2), data1), data1);printf("Res:%d\n", res);return res; }main函數
int main() {Fun(division, sum, mul, 20, 4);system("pause");return 0; }運行結果:
函數指針還有很多的用途啦,指針用的話,大神跑不了,哈哈哈哈哈。
總結
以上是生活随笔為你收集整理的C语言函数指针和指针函数的定义和调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.4G无线通信
- 下一篇: 视频html5播放器代码实例