C++中函数指针的使用

来源:互联网 发布:c语言file的使用方法 编辑:程序博客网 时间:2024/06/05 16:42

函数的地址是存储其机器语言代码的内存的开始地址。

1、获取函数的地址

直接使用函数名(不跟参数)即可。

2、声明函数指针

返回类型 (*pf) (参数列表)

函数原型: double pam(int);

指针类型: double (*pf)(int)

3、使用函数指针来调用被指向的函数

pf =pam;

以下两种格式都可以(C++都允许):

double x= pf(5);

doube y= (*pf)(5)

4、使用typedef 进行简化

typededouble (*p_func) (int )

p_funcpf;

将p_func作为函数指针的原型

示例:

#include <iostream>using namespace std;const double * f1(const double ar[],int n);const double * f2(const double [] ,int);const double * f3(const double *,int );typedef const double * (*p_func)(const double * ,int );int main(){double av[3] = {111.3,1542.6,2227.9};//pointer to a function//const double *(*p1)(const double *,int )=f1;//const double *(*p2)(const double *,int )=f2;p_func p1 = f1;p_func p2 = f2;cout<<"Using pointers to functions:\n";cout<<"Address Value\n";cout<<(*p1)(av,3)<<": "<<*(*p1)(av,3)<<endl;cout<<p2(av,3)<<": "<<*p2(av,3)<<endl;//const double *(*pa[3])(const double *,int )={f1,f2,f3};//const double *(**pb)(const double *,int) = pa;p_func pa[3] = {f1,f2,f3};p_func * pb = pa;cout<<"\nUsing an array of pointers to functions:\n";cout<<"Address  Values\n";for(int i=0;i<3;++i)cout<<pa[i](av,3)<<": "<<*pa[i](av,3)<<endl;for(int i=0;i<3;++i)cout<<pb[i](av,3)<<": "<<*pb[i](av,3)<<endl;cout<<"Using pointers to an array of pointers:\n";cout<<"Address Values\n";p_func (*pc)[3];pc = &pa;const double * pdb = (*pc)[1](av,3);cout<<pdb<<" : "<<*pdb<<endl;}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;}


0 0
原创粉丝点击