用函數指針變量調用函數
指針變量也可以指向一個函數。一個函數在編譯時被分配給一個入口地址。這個函數入口地址就稱為函數的指針。可以用一個指針變量指向函數,然后通過該指針變量調用此函數。
例 求a和b中的大者。
先按一般方法寫程序:
#include <iostream>using namespace std;int main(){ int max(int x,int y); //函數聲明 int a,b,m; cin>>a>>b; m=max(a,b); //調用函數max,求出最大值,賦給m cout<<"max="<<m<<endl; return 0;}int max(int x,int y){ int z; if(x>y) z=x; else z=y; return(z);}
可以用一個指針變量指向max函數,然后通過該指針變量調用此函數。定義指向max函數的指針變量的方法是:
請將它和函數max的原型作比較:
int max(int, int); //max函數原型
可以看出: 只是用(*p)取代了max,其他都一樣。現在將上面程序的主函數修改如下:
#include <iostream>using namespace std;int main( ){ int max(int x,int y); //函數聲明 int (*p)(int,int); //定義指向函數的指針變量p int a,b,m; p=max; //使p指向函數max cin>>a>>b; m=p(a,b); cout<<″max=″<<m<<endl; return 0;}
請注意第7行的賦值語句“p=max;”。此語句千萬不要漏寫,它的作用是將函數max的入口地址賦給指針變量p。這時,p才指向函數max。
指向函數的指針變量的一般定義形式為:
函數類型 (*指針變量名)(函數形參表);
C++返回指針值的函數
一個函數可以帶回一個整型值、字符值、實型值等,也可以帶回指針型的數據,即地址。其概念與以前類似,只是帶回的值的類型是指針類型而已。返回指針值的函數簡稱為指針函數。
定義指針函數的一般形式為:
類型名 *函數名(參數表列);
例如:
int *a(int x, int y);
新聞熱點
疑難解答
圖片精選