关于结构体指针问题,还有函数指针作为结构体成员的问题 5
structfb_info{chsrmodename[40];......int(*changvar)(int);int(*switch_con)(int,structf...
struct fb_info{
chsr modename[40];
...
...
int(*changvar)(int);
int(*switch_con)(int,struct fb_info*);
int(*updatevar)(int,struct fb_info*);
}
我的问题是if(fb_info.changevar) //表达了什么意思
(*fb_info.changevar)(con); //*fb_info.changevar 的解释
能不能给我解释一下这个if 语句
谢谢大家 展开
chsr modename[40];
...
...
int(*changvar)(int);
int(*switch_con)(int,struct fb_info*);
int(*updatevar)(int,struct fb_info*);
}
我的问题是if(fb_info.changevar) //表达了什么意思
(*fb_info.changevar)(con); //*fb_info.changevar 的解释
能不能给我解释一下这个if 语句
谢谢大家 展开
6个回答
展开全部
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这个函数。就和普通的变量指针指向一个变量的意思一样的。
希望对你有帮助!
这是一个函数指针,这个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这个函数。就和普通的变量指针指向一个变量的意思一样的。
希望对你有帮助!
追问
我刚才的问题描述不准确
fb_info.charevar 解释一下是不是这样 charvevar是指向一个函数入口地址的指针
如何charevar又是fb_info结构体的成员 所以fb_info.charevar 是一个指针
展开全部
int(*changvar)(int);
changvar表示指向函数的指针
该函数指针存放的是一个函数的首地址
假如该函数指针为空表示没有对应的函数
如果赋值了的话,那么就可以调用
(*fb_info.changevar)(con); 就是调用该函数
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!=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)(con)的意思是调用这个函数
这个结构是用C实现的对象封装,如果你学过C++就很容易理解了
这些函数指针相当于这个对象的一些方法函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fb_info.changevar是函数指针,在判断中是用来判断这个指针是否已经被指定了函数;如果没有初始化,则不确定指针的内容,使用时会报错;如果指定为0,则表明不指向任何函数;所以这里的判断是等价于if (fb_info.changevar != NULL),只能判定有没有指向0;
(*fb_info.changevar)(con)是调用函数,等价于 fb_info.changevar(con);
(*fb_info.changevar)(con)是调用函数,等价于 fb_info.changevar(con);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询