最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何通過(guò)函數(shù)指針調(diào)用函數(shù)(實(shí)現(xiàn)代碼)

 更新時(shí)間:2013年09月02日 10:41:52   作者:  
指針可以不但可以指向一個(gè)整形,浮點(diǎn)型,字符型,字符串型的變量,也可以指向相應(yīng)的數(shù)組,而且還可以指向一個(gè)函數(shù)

說(shuō)明:
指針可以不但可以指向一個(gè)整形,浮點(diǎn)型,字符型,字符串型的變量,也可以指向相應(yīng)的數(shù)組,而且還可以指向一個(gè)函數(shù)。

一個(gè)函數(shù)在編譯的時(shí)候會(huì)被分配給一個(gè)入口地址。這個(gè)函數(shù)入口地址稱(chēng)為函數(shù)的指針??梢杂靡粋€(gè)指針變量指向函數(shù),然后通過(guò)該指針變量調(diào)用此函數(shù)。

定義指向函數(shù)的指針變量的方法是:

復(fù)制代碼 代碼如下:

int (*p) (int ,int );

int【指針變量p指向的函數(shù)的類(lèi)型】 (*p)【p是指向函數(shù)的指針變量】 ( int,int )【p所指向的形參類(lèi)型】;

與函數(shù)的原型進(jìn)行比較

復(fù)制代碼 代碼如下:

int max  (int, int );

int【函數(shù)的類(lèi)型】 max【函數(shù)名】 ( int,int )【函數(shù)的形參類(lèi)型】;

一個(gè)例子:
一般方法的代碼:

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 int max(int x,int y);
 int a,b,c,m;
 cout<<"Please input three integers:"<<endl;
 cin>>a>>b>>c;
 m=max(max(a,b),c);
 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ù),然后通過(guò)該指針變量調(diào)用函數(shù)。
通過(guò)(*p)來(lái)調(diào)用函數(shù)
復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 int max(int x,int y);
 int (*p) (int x,int y);
 p=max;
 int a,b,c,m;
 cout<<"Please input three integers:"<<endl;
 cin>>a>>b>>c;
 m=(*p)((*p)(a,b),c);
 cout<<"Max="<<m<<endl;
 return 0; 
}
int max(int x,int y){
 int z;
 if(x>y){
  z=x;
 } else{
  z=y;
 }
 return z;
}

可以通過(guò)指針p直接調(diào)用函數(shù)
復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 int max(int x,int y);
 int (*p) (int x,int y);
 p=max;
 int a,b,c,m;
 cout<<"Please input three integers:"<<endl;
 cin>>a>>b>>c;
 m=p(p(a,b),c);
 cout<<"Max="<<m<<endl;
 return 0; 
}
int max(int x,int y){
 int z;
 if(x>y){
  z=x;
 } else{
  z=y;
 }
 return z;
}

用指向函數(shù)的指針作為函數(shù)的參數(shù)
函數(shù)指針變量最常見(jiàn)的用途之一是作為函數(shù)的參數(shù),將函數(shù)名傳遞給其他函數(shù)的形參。這樣那個(gè)就可以在調(diào)用一個(gè)函數(shù)的過(guò)程中,根據(jù)給定的不同的實(shí)參,調(diào)用不同的函數(shù)。

例如,利用該方法解決,兩個(gè)函數(shù)y1=(x+1)^1;   y2=(2x+3)^2   ;   y3=(x^2+1)^3

分析:編寫(xiě)3個(gè)函數(shù)f1,f2,f3,用來(lái)求上面3個(gè)函數(shù)x+1,2x+3,x^2+1的值。

然后編寫(xiě)一個(gè)通用函數(shù)Squar,他有兩個(gè)形參:a次方和指向函數(shù)、
程序代碼:

復(fù)制代碼 代碼如下:

#include<iostream>
#include<math.h>
using namespace std;
double fun1(double n){
 double r;
 r=n+1;
 return r;
}
double fun2(double n){
 double r;
 r=2*n+3;
 return r;
}
double fun3(double n){
 double r;
 r=(pow(n,2)+1);
 return r;
}
double Squar(int a, double x, double(*p)(double )){
 double r,z;
 z=(*p)(x);
 r=pow(z,a);
 return r;
}
int main(){
 double fun1(double n);
    double fun2(double n);
 double fun3(double n);
    double Squar(int a, double x, double(*p)(double ));
 double x;
    cout<<"Please input x:";
 cin>>x;
 cout<<"(x+1)^1=";
 cout<<Squar(1,x,fun1)<<endl;
 cout<<"(2x+3)^2=";
 cout<<Squar(2,x,fun2)<<endl;
 cout<<"(x^2+1)^3="; 
 cout<<Squar(3,x,fun3)<<endl; 
 cout<<endl;
 return 0;   
}

相關(guān)文章

  • 你真的懂C++中的namespace用法

    你真的懂C++中的namespace用法

    命名空間(namespace)為防止名字沖突提供了更加可控的機(jī)制,命名空間分割了全局命名空間,其中每個(gè)命名空間是一個(gè)作用域,今天通過(guò)本文給大家分享C++中namespace用法,感興趣的朋友一起看看吧
    2021-06-06
  • C++構(gòu)造函數(shù)的一些注意事項(xiàng)總結(jié)

    C++構(gòu)造函數(shù)的一些注意事項(xiàng)總結(jié)

    構(gòu)造函數(shù)是創(chuàng)建類(lèi)對(duì)象,并且在創(chuàng)建完成前,對(duì)類(lèi)進(jìn)行初始化的特殊函數(shù),下面這篇文章主要給大家介紹了關(guān)于C++構(gòu)造函數(shù)的一些注意事項(xiàng),需要的朋友可以參考下
    2021-11-11
  • C 語(yǔ)言結(jié)構(gòu)體的使用方法

    C 語(yǔ)言結(jié)構(gòu)體的使用方法

    這篇文章主要介紹了C 語(yǔ)言結(jié)構(gòu)體的使用,文章介紹了結(jié)構(gòu)體定義的多種類(lèi)型,想具體了解的朋友請(qǐng)看下面文章的內(nèi)容
    2021-09-09
  • C++?Boost?MultiArray簡(jiǎn)化使用多維數(shù)組庫(kù)

    C++?Boost?MultiArray簡(jiǎn)化使用多維數(shù)組庫(kù)

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)
    2022-11-11
  • 詳解C++中shared_ptr的使用教程

    詳解C++中shared_ptr的使用教程

    shared_ptr能夠記錄對(duì)象被引用的次數(shù),主要被用來(lái)管理動(dòng)態(tài)創(chuàng)建的對(duì)象的銷(xiāo)毀,這里我們就來(lái)詳解C++中shared_ptr的使用教程,需要的朋友可以參考下
    2016-05-05
  • C++探索構(gòu)造函數(shù)私有化會(huì)產(chǎn)生什么結(jié)果

    C++探索構(gòu)造函數(shù)私有化會(huì)產(chǎn)生什么結(jié)果

    C++的構(gòu)造函數(shù)的作?:初始化類(lèi)對(duì)象的數(shù)據(jù)成員。即類(lèi)的對(duì)象被創(chuàng)建的時(shí)候,編譯系統(tǒng)對(duì)該對(duì)象分配內(nèi)存空間,并?動(dòng)調(diào)?構(gòu)造函數(shù),完成類(lèi)成員的初始化。構(gòu)造函數(shù)的特點(diǎn):以類(lèi)名作為函數(shù)名,?返回類(lèi)型
    2022-05-05
  • C++中類(lèi)的默認(rèn)成員函數(shù)詳解

    C++中類(lèi)的默認(rèn)成員函數(shù)詳解

    大家好,本篇文章主要講的是C++中類(lèi)的默認(rèn)成員函數(shù)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2022-01-01
  • Qt實(shí)現(xiàn)制作簡(jiǎn)單的計(jì)算器

    Qt實(shí)現(xiàn)制作簡(jiǎn)單的計(jì)算器

    計(jì)算器是我們生活中很常見(jiàn)的東西,它可以由多種語(yǔ)言多種方式來(lái)實(shí)現(xiàn)。本文主要介紹的是利用Qt實(shí)現(xiàn)的簡(jiǎn)易計(jì)算器的制作,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-12-12
  • 簡(jiǎn)單談?wù)凜++中指針與引用的區(qū)別

    簡(jiǎn)單談?wù)凜++中指針與引用的區(qū)別

    指針和引用在C++中很常用,但是對(duì)于它們之間的區(qū)別很多初學(xué)者都不是太熟悉,下面來(lái)談?wù)勊麄?者之間的區(qū)別和用法
    2017-04-04
  • C++與QML進(jìn)行數(shù)據(jù)交互的常見(jiàn)方法總結(jié)

    C++與QML進(jìn)行數(shù)據(jù)交互的常見(jiàn)方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C++與QML進(jìn)行數(shù)據(jù)交互的常見(jiàn)方法,文中 的示例代碼講解詳細(xì),具有一定的參考價(jià)值,有需要的小伙伴可以跟隨小編一起了解一下
    2023-10-10

最新評(píng)論

子长县| 拜城县| 阳江市| 丽水市| 米脂县| 涞源县| 赤城县| 陇西县| 通州区| 元阳县| 马尔康县| 榕江县| 衡山县| 中方县| 江口县| 岳池县| 通山县| 当阳市| 文昌市| 都昌县| 东城区| 武清区| 平乡县| 富宁县| 黑河市| 泸西县| 吴江市| 贵定县| 肇州县| 宣恩县| 刚察县| 凤山县| 泗水县| 惠来县| 来安县| 越西县| 张北县| 淳安县| 泰和县| 长寿区| 迭部县|