如何解决在c中使用赋值定义功能指针
我正在学习C。我知道第一行在做什么;它正在指向一个没有参数的函数,并且它返回一个int值。但是wtf是第二个吗?
我的猜测是它将int转换为函数吗?但是将int转换为函数意味着什么? 另外,为什么在我尝试调用函数“ function()”时会导致错误?
int (*function) ();
function = (int (*) ()) (1000);
解决方法
总体而言,该代码是胡说八道。你从哪里得到的?
它正在指向没有参数的函数
相反,它正在指向具有过时样式参数列表的函数。
但是wtf是第二个吗?
它将函数指针分配给指向地址1000(十进制)的点,这是从int强制转换为函数指针类型的方法。
为什么当我尝试调用函数'function()'时会导致错误?
可能是因为在地址1000上没有分配此类功能。您甚至可能无法访问该区域等。
,学习功能的指针很麻烦。 简单的示例可能有助于更好地理解。
假设您要指向此功能:
int sum (int a,int b) {
return a+b;
}
因此您需要定义一个具有相同类型的指针:
int *pointerToSum (int,int);
并简单地将其分配给功能:
pointerToSum = ∑
如果要使用它:
(*pointerToSum)(3,5); //8
您可以使用function-pointer
标签来找到更复杂的答案。
您的问题被人删除,因为之前有重复的问题。
我为自己实现了功能指针,这有点复杂,您可以在exercise of function pointer
中看到祝你一切顺利。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。