VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2670|回复: 2

[分享] c++ primer plus 6 函数指针梳理&笔记

[复制链接]
37_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-2 15:13:42 | 显示全部楼层 |阅读模式
/* menu.c:  Illustrates an array of function ptrs*/
/* You must provide definitions for these:*/
/*函数也具有地址,且函数的地址是存储其机器语言代码的内存的地址的开始地址
将函数地址传递给某个函数的步骤:
一.获取函数的地址,函数名是指向该函数的指针,要将函数作为参数进行传递,必须传递函数名
eg:
process(think);//使得process函数在其内部调用think(),函数
throught(think());//thought函数首先调用think()函数,然后将think()的返回值传递给th..函数
二.声明函数指针,需声明指向函数的指针,且声明时像声明函数一样指定函数的返回类型和函数的参数列表,声明时,函数指针一般要与待指向的函数类型相同:
eg:double pam(int);double (*pf)(int);//必须用括号括起(*pf),否则意为返回类型为double *
把函数地址作为参数 eg:
void estimate(int lines,double (*pf)(int));
让estimate函数使用pam()函数,需将pam()地址传递给它 eg:estimate(50,pam);
三.使用函数指针调用函数(当pf=pam)
1.pam(5);//原函数地址
2.pf(5);
3.(*pf)(5);
注:从用法来说,pf与(*pf)等价
*/
#include<iostream>
double *f1(double *,int);
double *f2(double *,int);
double *f3(double *,int);
using namespace std;
int main()
{
     int choice;//声明函数指针数组
     double av[]={1.1,2.2,3.3};
     double *(*farray[])(double *,int) =
         {//前提:三个函数的返回类型和参数列表相同
              f1,f2,f3
         };
         auto pd=&farry;
     //auto pd=&farray;pc为指向整个函数指针数组的指针
     //或:double *(*(*pd)[])(double *,int)=&farry;
     for (;;)
        {
            if(choice >= 1 && choice <= 3)
            {
                /* Process request: */
                farray[choice-1](av,3);
                double ac=*farray[choice-1](av,3);
                //列出的4种情况:
                (*pd)[choice-1](av,3);
                double ar=*(*pd)[choice-1](av,3);
                //或者是用(*pf,即指向函数的指针的值):
                (*(*pd)[choice-1])(av,3);
                double am=*(*(*pd)[choice-1])(av,3);
            }
            else if (choice == 4)
            break;
        }
     return 0;
}




上一篇:字符串查找
下一篇:硬编码复习笔记
51_avatar_middle
最佳答案
2 
在线会员 发表于 2020-5-8 18:21:46 | 显示全部楼层
祝VC驿站越办越好!
68_avatar_middle
最佳答案
0 
在线会员 发表于 2022-11-19 10:10:20 | 显示全部楼层
学习,收藏,感谢
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-3-20 23:43

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表