在 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
中看到
祝你一切顺利。
我正在学习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
中看到祝你一切顺利。