淺析C++中的函數(shù)與指針
用函數(shù)指針變量調(diào)用函數(shù)
指針變量也可以指向一個函數(shù)。一個函數(shù)在編譯時被分配給一個入口地址。這個函數(shù)入口地址就稱為函數(shù)的指針。可以用一個指針變量指向函數(shù),然后通過該指針變量調(diào)用此函數(shù)。
例 求a和b中的大者。
先按一般方法寫程序:
#include <iostream> using namespace std; int main() { int max(int x,int y); //函數(shù)聲明 int a,b,m; cin>>a>>b; m=max(a,b); //調(diào)用函數(shù)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函數(shù),然后通過該指針變量調(diào)用此函數(shù)。定義指向max函數(shù)的指針變量的方法是:
請將它和函數(shù)max的原型作比較:
int max(int, int); //max函數(shù)原型
可以看出: 只是用(*p)取代了max,其他都一樣?,F(xiàn)在將上面程序的主函數(shù)修改如下:
#include <iostream> using namespace std; int main( ) { int max(int x,int y); //函數(shù)聲明 int (*p)(int,int); //定義指向函數(shù)的指針變量p int a,b,m; p=max; //使p指向函數(shù)max cin>>a>>b; m=p(a,b); cout<<″max=″<<m<<endl; return 0; }
請注意第7行的賦值語句“p=max;”。此語句千萬不要漏寫,它的作用是將函數(shù)max的入口地址賦給指針變量p。這時,p才指向函數(shù)max。
指向函數(shù)的指針變量的一般定義形式為:
函數(shù)類型 (*指針變量名)(函數(shù)形參表);
C++返回指針值的函數(shù)
一個函數(shù)可以帶回一個整型值、字符值、實型值等,也可以帶回指針型的數(shù)據(jù),即地址。其概念與以前類似,只是帶回的值的類型是指針類型而已。返回指針值的函數(shù)簡稱為指針函數(shù)。
定義指針函數(shù)的一般形式為:
類型名 *函數(shù)名(參數(shù)表列);
例如:
int *a(int x, int y);
相關(guān)文章
VisualStudio2019構(gòu)建C/C++靜態(tài)庫和動態(tài)庫dll的問題 附源碼
這篇文章主要介紹了VisualStudio2019構(gòu)建C/C++靜態(tài)庫和動態(tài)庫(dll)(文末附源碼),本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03基于內(nèi)核線程的創(chuàng)建、使用和退出以及延時宏的補充說明介紹
本篇文章是對內(nèi)核線程的創(chuàng)建、使用和退出以及延時宏的補充說明介紹進行了敘述。需要的朋友參考下2013-05-05C++深入淺出探索數(shù)據(jù)結(jié)構(gòu)的原理
C++的數(shù)據(jù)結(jié)構(gòu)很多,很復(fù)雜,所以本文將通過示例帶大家深入了解一下C++中的數(shù)據(jù)結(jié)構(gòu)與算法。文中的示例代碼講解詳細,感興趣的可以了解一下2022-05-05