码迷,mamicode.com
首页 > 其他好文 > 详细

关于函数指针的比较

时间:2018-06-21 17:37:19      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:关于   class   函数指针   地址   style   color   一个   col   fun   

typedef void (*pFunc)(void);



void f1(void);

void f2(void);



pFunc pfunc1 = f1;

pFunc pfunc2 = f2;

pFunc pfunc3 = f2;

 

比较pfunc1,pfunc2,pfunc3是否指向同一个函数?

pfunc1 == pfunc3 ? 

 

pFunc作为函数指针类型,其本身是一个指针,在内存中实际占有空间(一般32位系统指针4字节),/*pfunc1的值实际为内存中pfunc1本身的地址,而非f1中存的值(f1的地址)*/。(有问题)

正确的比较方法为 0 == memcmp(pfunc1, pfunc3) ?

 

实际上:

pfunc1 = f1;//等价于
pfunc1 = &f1;




或者拿整数来说明:
好比:

  int a = 0; 

  int b = 1;

  int* p1 = &a;

  int*p2 = &b;

  是比较p1 == p2还是 *p1 = *p2?

 

关于函数指针的比较

标签:关于   class   函数指针   地址   style   color   一个   col   fun   

原文地址:https://www.cnblogs.com/kuikuitage/p/9209292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!