c赋值运算符=
有人能解释一下下面的c程序是如何工作的吗 特别是如何将函数“fun”分配给c赋值运算符=,c,C,有人能解释一下下面的c程序是如何工作的吗 特别是如何将函数“fun”分配给(*p)(=fun;我需要知道编译器是如何编译这段代码的 #include<stdio.h> int fun(); /* function prototype */ int main() { int (*p)() = fun; (*p)(); return 0; } int fun() { printf("Hello World\n"); return 0; } #包
(*p)(=fun
;我需要知道编译器是如何编译这段代码的
#include<stdio.h>
int fun(); /* function prototype */
int main()
{
int (*p)() = fun;
(*p)();
return 0;
}
int fun()
{
printf("Hello World\n");
return 0;
}
#包括
int fun();/*功能原型*/
int main()
{
int(*p)()=乐趣;
(*p)();
返回0;
}
int fun()
{
printf(“Hello World\n”);
返回0;
}
如果查看由gcc
生成的代码(使用-O0
):
它将
fun
函数的地址存储在堆栈中的一个变量中,然后直接间接调用该地址。如果查看由gcc
生成的代码(使用-O0
):
它将
fun
函数的地址存储在堆栈中的一个变量中,然后直接间接调用该地址。每个函数都存在于内存中的某个地方。声明:
int (*p)() = fun;
正在将函数fun的内存位置分配给p。然后,线路:
(*p)();
正在调用存在于p所指向的内存位置的函数
互联网上充满了关于“函数指针”的信息。每个函数都存在于内存中的某个地方。声明:
int (*p)() = fun;
正在将函数fun的内存位置分配给p。然后,线路:
(*p)();
正在调用存在于p所指向的内存位置的函数
互联网上充满了关于“函数指针”的信息。查找“函数指针”。查找“函数指针”。这样是最快的调用吗?比f()快@tuğrulbüyükı351;ık当然不会,并且在启用优化的情况下,
gcc
会直接使用该程序发出一个callıu fun
。这种方式是最快的呼叫吗?比f()快@tuğrulbüyükıık当然不会,并且在启用了优化的情况下,gcc
直接向该程序发出一个callıu fun
。