一段C语言代码看不懂,求解释

2019-08-14 16:40发布

有一小段C语言代码看不懂,求解(请描述得越详细越好):

void user(void);                           //定义函数user,它无参数,无返回值
void (*UserProgram) ();                //定义函数指针UserProgram,该指针所指向的函数应当满足无参数无返回值的特点
UserProgram = (void(*)()) user;     //??



谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
陈十七
2019-08-14 17:51
user是函数名,同时也是该函数的首地址,本质上是一个64位无符号整型(在64位机上)。
第三行中,void(*)()是一种指针类型,该类型的指针指向无参数也无返回值的函数,所以是一种函数指针。
第三行中,void(*)()外的括号()标志强制类型转换,这里表示将user这个64位无符号整型数据强制转换为void(*)()类型的指针。
第三行中,= 表示赋值,由于现在user和UserProgram 属于同一种数据结构,所以就可以进行赋值啦。赋值的结果是:UserProgram 成为指向函数 void user(void) 的函数指针,接下来就可以通过语句:(*UserProgram)() 来调用该函数了。

一周热门 更多>