紫苑Yoo梦 发表于 2019-11-26 17:07:34

关于函数指针的赋值问题

大佬们,请问一下关于函数指针的用法,虽然在网上查了很多资料,但是还是有点迷迷糊糊
typedef struct
{
unsigned char a;
unsigned int   b;                           
void (*fun)();      //函数指针
}TEST;


TEST    test={
{   0,   0,    (*demo)   },//赋值方式1
{   1,   1,    (&demo1)   },//赋值方式2
{   2,   2,    demo          },//赋值方式3
};

void main()
{
    (*test.fun)();//执行函数
}
void demo(void)//函数
{
    /*do something*/
}
请问赋值方式哪个是正确的?
执行函数是这种写法吗?
如能指点一二,不胜感激!

eric2013 发表于 2019-11-26 18:03:15


紫苑Yoo梦 发表于 2019-11-26 19:37:15

emm……这是3种方式都可以?这么神奇?
那执行函数也可以写成这3种方式?
*test.fun)();
&test.fun)();
test.fun)();
谢谢大佬指点

eric2013 发表于 2019-11-26 20:05:20

紫苑Yoo梦 发表于 2019-11-26 19:37
emm……这是3种方式都可以?这么神奇?
那执行函数也可以写成这3种方式?
*test.fun)();

我是test.fun测试的。
而这两个:
*test.fun)();
&test.fun)();
编译器不认识



caicaptain2 发表于 2019-11-27 15:06:44

本帖最后由 caicaptain2 于 2019-11-27 15:08 编辑

赋值方式3感觉最好,简单明了。 函数名本身就是指针属性。

从理论上来看,赋值1和2都是错误的。
页: [1]
查看完整版本: 关于函数指针的赋值问题