1、前言
這裡有兩個繞來繞去的東西,函數指針和指針函數;對于四個字,我們首先隻看後面兩個字,這樣友善我們記憶;
函數指針,本質是指針;是指向函數入口位址的指針。
指針函數,本質是函數;傳回類型為指針的函數。
2、介紹
對于一個函數而言,函數名是指向函數第一條指令的常量指針。在程式編譯之後,編譯器會為每個函數配置設定首位址,即該函數第一條指令的位址。一般情況下,我們可以用一個指針來儲存這個位址,而這個指針就是函數指針。是以函數指針實際就是指向函數的别名,我們就可以用這個指針來調用這個函數。
3、用途
函數指針有兩個用途:(1)調用函數,(2)做函數的參數
4、聲明方法
普通聲明方法:
利用typedef來簡化聲明和定義的操作:
具體的簡化效果在後面給出例子明了地說明簡化帶來的友善。
5、示例
定義三個函數,分别對兩個int型的變量做操作,up函數用于兩個變量的加一操作,down函數用于兩個變量的減一操作,print函數用于列印對應的操作和操作後的結果,實作代碼如下:
利用typedef簡化之後的代碼如下,可以看出的确較少了一部分繁瑣又冗長的代碼;
運作結果:

6、注意事項
(1)聲明函數指針時,其傳回值類型、參數個數、參數類型等應該與需要它指向的函數保持一緻,否者編譯器會報錯;
(2)利用函數指針指向某一個函數的時候,隻需要将函數名指派給函數指針即可,不需要附帶函數名後的參數;