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