打印功能地址

时间:2015-03-23 05:01:39

标签: c function pointers function-pointers

我一直试图弄清楚如何打印功能的地址,这就是我想出来的

#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 格式说明符是打印函数地址的正确方法还是有其他方法可以这样做?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

 printf("The address of the function is =%p\n",test);

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