首页 > 解决方案 > 在 c 中使用赋值定义函数指针

问题描述

我正在学习 C。我知道第一行在做什么;它正在创建一个指向没有参数的函数的指针,并返回一个 int。但是wtf是第二个在做什么?

我的猜测是它将 int 转换为函数?但是将 int 转换为函数意味着什么?另外,为什么我尝试调用函数时会导致错误:'function()'?

int (*function) ();
function = (int (*) ()) (1000);

标签: cfunction-pointers

解决方案


总的来说,代码是胡说八道。你是从哪里弄来的?

它正在创建一个指向没有参数的函数的指针

相反,它正在创建一个指向具有过时样式参数列表的函数的指针。

但是wtf是第二个在做什么?

它将函数指针分配为指向地址 1000(十进制),这是我从 int 转换为函数指针类型的方法。

为什么当我尝试调用函数时会导致错误:'function()'?

可能是因为在地址 1000 上没有分配这样的功能。您甚至可能无法访问该区域等。


推荐阅读