淺析C++中的函數(shù)與指針
用函數(shù)指針變量調(diào)用函數(shù)
指針變量也可以指向一個(gè)函數(shù)。一個(gè)函數(shù)在編譯時(shí)被分配給一個(gè)入口地址。這個(gè)函數(shù)入口地址就稱為函數(shù)的指針??梢杂靡粋€(gè)指針變量指向函數(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);
}
可以用一個(gè)指針變量指向max函數(shù),然后通過該指針變量調(diào)用此函數(shù)。定義指向max函數(shù)的指針變量的方法是:
請(qǐng)將它和函數(shù)max的原型作比較:
int max(int, int); //max函數(shù)原型
可以看出: 只是用(*p)取代了max,其他都一樣。現(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;
}
請(qǐng)注意第7行的賦值語(yǔ)句“p=max;”。此語(yǔ)句千萬不要漏寫,它的作用是將函數(shù)max的入口地址賦給指針變量p。這時(shí),p才指向函數(shù)max。

指向函數(shù)的指針變量的一般定義形式為:
函數(shù)類型 (*指針變量名)(函數(shù)形參表);
C++返回指針值的函數(shù)
一個(gè)函數(shù)可以帶回一個(gè)整型值、字符值、實(shí)型值等,也可以帶回指針型的數(shù)據(jù),即地址。其概念與以前類似,只是帶回的值的類型是指針類型而已。返回指針值的函數(shù)簡(jiǎn)稱為指針函數(shù)。
定義指針函數(shù)的一般形式為:
類型名 *函數(shù)名(參數(shù)表列);
例如:
int *a(int x, int y);
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)電影管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電影管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語(yǔ)言實(shí)現(xiàn)古代時(shí)辰計(jì)時(shí)與現(xiàn)代時(shí)間換算
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)古代時(shí)辰計(jì)時(shí)與現(xiàn)代時(shí)間換算,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03

