关于函数指针的比较
Posted kuikuitage
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于函数指针的比较相关的知识,希望对你有一定的参考价值。
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?
以上是关于关于函数指针的比较的主要内容,如果未能解决你的问题,请参考以下文章