C++中函数指针的使用

亦凉 2022-08-04 11:46 280阅读 0赞

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

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作为函数指针的原型

示例:

  1. #include <iostream>
  2. using namespace std;
  3. const double * f1(const double ar[],int n);
  4. const double * f2(const double [] ,int);
  5. const double * f3(const double *,int );
  6. typedef const double * (*p_func)(const double * ,int );
  7. int main()
  8. {
  9. double av[3] = {111.3,1542.6,2227.9};
  10. //pointer to a function
  11. // const double *(*p1)(const double *,int )=f1;
  12. // const double *(*p2)(const double *,int )=f2;
  13. p_func p1 = f1;
  14. p_func p2 = f2;
  15. cout<<"Using pointers to functions:\n";
  16. cout<<"Address Value\n";
  17. cout<<(*p1)(av,3)<<": "<<*(*p1)(av,3)<<endl;
  18. cout<<p2(av,3)<<": "<<*p2(av,3)<<endl;
  19. // const double *(*pa[3])(const double *,int )={f1,f2,f3};
  20. // const double *(**pb)(const double *,int) = pa;
  21. p_func pa[3] = {f1,f2,f3};
  22. p_func * pb = pa;
  23. cout<<"\nUsing an array of pointers to functions:\n";
  24. cout<<"Address Values\n";
  25. for(int i=0;i<3;++i)
  26. cout<<pa[i](av,3)<<": "<<*pa[i](av,3)<<endl;
  27. for(int i=0;i<3;++i)
  28. cout<<pb[i](av,3)<<": "<<*pb[i](av,3)<<endl;
  29. cout<<"Using pointers to an array of pointers:\n";
  30. cout<<"Address Values\n";
  31. p_func (*pc)[3];
  32. pc = &pa;
  33. const double * pdb = (*pc)[1](av,3);
  34. cout<<pdb<<" : "<<*pdb<<endl;
  35. }
  36. const double * f1(const double * ar,int n)
  37. {
  38. return ar;
  39. }
  40. const double *f2(const double ar[],int n)
  41. {
  42. return ar+1;
  43. }
  44. const double * f3(const double ar[],int n)
  45. {
  46. return ar+2;
  47. }

Center

发表评论

表情:
评论列表 (有 0 条评论,280人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c++函数指针使用

    在《c++程序设计》一书中之处对象名是对象在内存空间的一个地址映射,函数名也对应于函数的执行代码的入口地址。指针可以指向一个对象,也可以指向一个函数,函数类型由返回值类型和形参

    相关 C++函数指针

    标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的 指针(也叫做"闭包(closure)"或"委托(delegate)")在一些语言

    相关 C++函数指针使用

    函数的地址是存储其机器语言代码的内存的开始地址。 1、获取函数的地址 直接使用函数名(不跟参数)即可。 2、声明函数指针 返回类型 (\pf) (参数列表) 函数原型