微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在c中使用赋值定义功能指针

如何解决在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 举报,一经查实,本站将立刻删除。