我一直试图弄清楚如何打印功能的地址,这就是我想出来的
#include<stdio.h>
int test(int a, int b)
{
return a+b;
}
int main(void)
{
int (*ptr)(int,int);
ptr=&test;
printf("The address of the function is =%p\n",ptr);
printf("The address of the function pointer is =%p\n",&ptr);
return 0;
}
在没有任何警告和错误的情况下发生这样的事情
address of function is =0x4006fa
address of function pointer is =0x7fffae4f73d8
我的问题是否使用%p 格式说明符是打印函数地址的正确方法还是有其他方法可以这样做?
答案 0 :(得分:5)
这不正确。 %p
仅适用于对象指针类型(事实上,void *
具体)。函数指针没有格式说明符。
答案 1 :(得分:2)
不使用单独的指针来打印函数的地址,您可以在printf
中使用函数的名称。
printf("The address of the function is =%p\n",test);
要以十六进制格式打印地址,您可以使用%p
。