int(*changevar)(int);//你少些了个e
这是一个函数指针,这个changevar指针指向一个这样的函数:这个函数有一个int型参数,返回值也是int.所以if(fb_info.changevar) 的意思就是判断结构体fb_info中的changevar是否为空,等同于if(fb_info.changevar==NULL) .
而(*fb_info.changevar)(con)就是用changevar调用一个con函数了,con函数也是一个只有一个int参数,返回值是int的函数,此时 结构体fb_info的函数指针changevar指向con这个函数。就和普通的变量指针指向一个变量的意思一样的。
希望对你有帮助!
int(*changvar)(int);
changvar表示指向函数的指针
该函数指针存放的是一个函数的首地址
假如该函数指针为空表示没有对应的函数
如果赋值了的话,那么就可以调用
(*fb_info.changevar)(con); 就是调用该函数
int(*changvar)(int); //这是个函数指针,可以指向有一个int参数并且返回int的函数
if(fb_info.changevar) //这个意思是if(fb_info.changevar!=0)
(*fb_info.changevar)(con); //以con为参数,执行changver指向的函数
if (fb_info.changevar),等价于if (fb_info.changevar != NULL)
(*fb_info.changevar)(con)的意思是调用这个函数
这个结构是用C实现的对象封装,如果你学过C++就很容易理解了
这些函数指针相当于这个对象的一些方法函数
fb_info.changevar是函数指针,在判断中是用来判断这个指针是否已经被指定了函数;如果没有初始化,则不确定指针的内容,使用时会报错;如果指定为0,则表明不指向任何函数;所以这里的判断是等价于if (fb_info.changevar != NULL),只能判定有没有指向0;
(*fb_info.changevar)(con)是调用函数,等价于 fb_info.changevar(con);
我擦·· 太高深