i**p 发帖数: 902 | 1 void subf() {}
void (*PtoF)(void);
1. PtoF = subf;
2. PtoF = &subf;
3. PtoF();
4. (*PtoF)();
1==2 hard to understand why it allows both
3==4 somehow easy to be understood
Is it good to allow both? |
|
i**p 发帖数: 902 | 2 void subf() {}
void (*PtoF)(void);
1. PtoF = subf;
2. PtoF = &subf;
3. PtoF();
4. (*PtoF)();
1==2 hard to understand why it allows both
3==4 somehow easy to be understood
Is it good to allow both? |
|
d****i 发帖数: 4809 | 3 你的函数指针的定义不对,应该对应函数的argument, 比如
void subf(int a, void *ptr) {}
void (*PtoF)(int, void*);
至于下面两个为什么一样,函数指针用函数名赋值和用函数的地址是等效的,可以想象
成函数名就是函数的入口地址。
PtoF = subf;
PtoF = &subf; |
|
d****i 发帖数: 4809 | 4 你的函数指针的定义不对,应该对应函数的argument, 比如
void subf(int a, void *ptr) {}
void (*PtoF)(int, void*);
至于下面两个为什么一样,函数指针用函数名赋值和用函数的地址是等效的,可以想象
成函数名就是函数的入口地址。
PtoF = subf;
PtoF = &subf; |
|
f*******n 发帖数: 12623 | 5 还有
PtoF = *****subf;
你能understand吗? |
|
f*******n 发帖数: 12623 | 6 还有
PtoF = *****subf;
你能understand吗? |
|