在 c 中使用赋值定义函数指针

Defining A Function Pointer Using Assignment In c

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

我的猜测是它正在将一个 int 转换为一个函数?但是将一个 int 变成一个函数是什么意思呢? 另外,为什么当我尝试调用函数时会导致错误:'function()'?

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

总的来说,代码是废话。你从哪里弄来的?

it's making a pointer to a function with no arguments

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

But wtf is the second doing?

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

why does it cause an error when I try to call the function: 'function()'?

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

学习函数指针是一件很痛苦的事。 简单的例子可能有助于更好地理解。

假设您要指向此函数:

int sum (int a , int b) {
    return a+b;
}

所以你需要定义一个相同类型的指针:

int *pointerToSum (int, int);

并简单地将其分配给函数:

pointerToSum = ∑

如果你想使用它:

(*pointerToSum)(3, 5); //8

您可以使用 function-pointer 标签找出更复杂的答案。

你的问题被人删除了,因为之前有重复的问题。

我为自己实现了 function-pointer,它有点复杂,您可以在 : exercise of function pointer

中看到

祝你一切顺利。