c++ 中指向函数的指针初始化和使用

对指针的声明没问题,问题处在声明后的使用。众所周知,函数指针分为两类1.普通函数指针声明:voidf(){};void(*p)(){};请问,对p赋值时正确的是:A:p=... 对指针的声明没问题,问题处在声明后的使用。
众所周知,函数指针分为两类
1.普通函数指针
声明:void f( ) { };
void (*p)( ) { };
请问,对p赋值时正确的是:
A: p=f
B: p=&f
使用指针函数正确的是:
C: p( );
D: (*P)( );
PS:我自己编译运行过,两种方式都正确,请问这是什么原因?

2.成员函数指针
声明: void Time::f( ) { }
void (Time::*p)( ) { }
请问赋值时正确的是:
E: p=Time::f
F: p=&Time::f;
使用指针函数时正确的是:
G (t.p)( )
H (t.*p)( )

题目很长,谢谢各位帮我解决下这个问题,是两种方式都可以吗?是否有什么区别呢?
展开
 我来答
百度网友4b66c0c7f2
2011-05-19 · TA获得超过290个赞
知道答主
回答量:31
采纳率:0%
帮助的人:42.2万
展开全部
1.A 2.D
都正确的原因是,p=f时会进行隐式类型转换,f被转换成指针类型
p=&f我就不解释了,指针赋值很明显
再一个void f( ) { };不是声明,是定义
void f();这才是声明

下面两个不会
牵着你的手544
推荐于2016-04-29 · 知道合伙人教育行家
牵着你的手544
知道合伙人教育行家
采纳数:5277 获赞数:39797
学生

向TA提问 私信TA
展开全部
 C++指向函数的指针定义方式为:
  返回类型 (*指针名)(函数参数列表),例如 void (*p)(int)是指向一个返回值为void 参数为int类型的函数。
  而若想定义一个指向类成员函数的函数指针该怎么定义呢?对成员函数指针的使用。
  (1)非静态成员函数
  定义方式:返回类型 (类名::*指针名)(函数参数列表)例如void (A::*p)(int)是一个指向A类中成员函数的函数指针。
  赋值方式:p=&A::函数名,而一般的函数指针的赋值是p=函数名即可,注意区别。(成员函数必须是public类型的)
  调用方式:成员函数指针的调用必须通过类对象进行调用,a.*p(int)即可调用成员函数(该成员函数是public类型的)
  (2)静态成员函数
  对于静态成员函数的定义和使用方法都与普通函数指针的相同,只是在赋值的时候和非静态成员们函数指针的赋值方法相同。
  因为静态成员函数的指针类型是与普通函数指针类型相同的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WiBeyond
2011-05-16 · 超过34用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:90.3万
展开全部
详见:《指针的艺术》

PS:台湾作者写的。你买本看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式