打印函数地址

Printing Function Address

我一直在尝试找出如何打印函数地址的方法,这就是我想出的方法

#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;
}

它o/p像这样没有任何警告和错误

address of function is =0x4006fa
address of function pointer  is =0x7fffae4f73d8

我的问题是使用 %p 格式说明符是打印函数地址的正确方法还是有其他方法可以做到这一点?

不使用单独的指针来打印函数的地址,您可以在 printf.

中使用函数的名称
 printf("The address of the function is =%p\n",test);

要以十六进制格式打印地址,您可以使用 %p

这是不正确的。 %p 仅适用于对象指针类型(实际上,void * 特别适用)。函数指针没有格式说明符。