c++函数指针用法大总结

实列代码:

#include <iostream>

const double *f1(const double ar[],int n);
const double *f2(const double [],int);
const double *f3(const double *,int);

int main(){
    
    using namespace std;
    double av[3]={11.3,15.6,27.9};
    
    const double *(*p1)(const double *,int)=f1;              //定义指向f1等三个函数的指针P1; 
    auto p2=f2;
    cout<<"用指针访问:\n";
    cout<<"Address:\n";
    cout<<(*p1)(av,3)<<":"<<*(*p1)(av,3)<<endl;              //前面的是f1函数返回元素地址;后面的是f1函数返回值 
    cout<<p2(av,3)<<":"<<*p2(av,3)<<endl;                    //前面的是f2函数返回元素地址;后面的是f2函数返回值
    
    
    const double *(*pa[3])(const double *, int)={f1,f2,f3};              //指向三个函数的  函数指针数组; 
    auto pb=pa;                                                          //声明同样类型的数组; 
    cout<<"\n函数指针访问\n";                  
    cout<<"Address:\n";
    for(int i=0;i<3;i++)
    cout<<pa[i](av,3)<<":"<<*pa[i](av,3)<<endl;                          
    
    cout<<"\n指针:\n";
    cout<<"Address:\n";
    for(int i=0;i<3;i++)
    cout<<pb[i](av,3)<<":"<<*pb[i](av,3)<<endl;
    
    cout<<"\n数组:\n";
    cout<<"Address:\n";
    auto pc=&pa;
    cout<<(*pc)[0](av,3)<<":"<<*(*pc)[0](av,3)<<endl;
    
    const double *(*(*pd)[3])(const double *,int)=&pa;
    
    const double *pdb=(*pd)[1](av,3);
    cout<<pdb<<":"<<*pdb<<endl;
    
    cout<<(*(*pd)[2])(av,3)<<":"<<*(*(*pd)[2])(av,3)<<endl; 
    
    return 0;
}
const double *f1(const double * ar,int n){
    
    return ar; 
    
}
const double *f2(const double ar[],int n){
    
    return ar+1; 
    
}
const double *f3(const double ar[],int n){
    
    return ar+2; 
    
}

运行结构:

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值