前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++学习笔记 -- 函数指针与指针函数

C++学习笔记 -- 函数指针与指针函数

作者头像
meteoric
发布2018-11-16 17:23:46
7580
发布2018-11-16 17:23:46
举报
文章被收录于专栏:游戏杂谈游戏杂谈游戏杂谈

函数指针:指向函数的指针,首先它是指针变量(同指向一个整形变量、字符、数组一样),其次它指向一个函数(地址)。

声明:函数类型 (* 指针变量名)(形参列表)

函数类型,指明函数的返回类型,由于()优先级高于*,所以指针变量名外的括号不能少,后面形参列表表示指针变量指向的函数所带的参数列表。

//
int max(int, int);

int (* p)(int, int) = &max;

int a, b, c, d;
cout<<"Input 3 numbers:"<<endl;
cout<<"a:";
cin>>a;
cout<<"b:";
cin>>b;
cout<<"c:";
cin>>c;

d = p(p(a, b), c);

cout<<"Max number:"<<d<<endl;


int max(int x, int y)
{
    return x > y ? x : y;
}

上面相当于用函数指针p,代替了max,为什么能这样?

事实上,每一个函数都有一个入口地址,这个地址相当于一个指针,而函数名表示的就是该函数的首地址(入口地址)。这样的话就有:p = &a 同 p = a 等价,下面的代码也是等价的:

//
d = (* p)(( *p)(a, b), c); 

//
d = p(p(a, b), c);

//
d = max(max(a, b), c);

指针函数:首先它是一个函数,其次它返回的类型是一个指针。

声明:类型标识符 *函数名(参数列表)

类型标识符,用于限定返回的类型(是指向型、字符型或者数组)

参考:

函数指针

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-05-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档