关于函数指针的赋值问题
大佬们,请问一下关于函数指针的用法,虽然在网上查了很多资料,但是还是有点迷迷糊糊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*/
}
请问赋值方式哪个是正确的?
执行函数是这种写法吗?
如能指点一二,不胜感激!
emm……这是3种方式都可以?这么神奇?
那执行函数也可以写成这3种方式?
*test.fun)();
&test.fun)();
test.fun)();
谢谢大佬指点 紫苑Yoo梦 发表于 2019-11-26 19:37
emm……这是3种方式都可以?这么神奇?
那执行函数也可以写成这3种方式?
*test.fun)();
我是test.fun测试的。
而这两个:
*test.fun)();
&test.fun)();
编译器不认识
本帖最后由 caicaptain2 于 2019-11-27 15:08 编辑
赋值方式3感觉最好,简单明了。 函数名本身就是指针属性。
从理论上来看,赋值1和2都是错误的。
页:
[1]