如何在C中打印函数指针的值?
我有一个指向返回常量字符指针的函数的指针。我的问题是如何打印指针以及指针引用的对象(字符串本身) 代码如下:如何在C中打印函数指针的值?,c,function,pointers,function-pointers,C,Function,Pointers,Function Pointers,我有一个指向返回常量字符指针的函数的指针。我的问题是如何打印指针以及指针引用的对象(字符串本身) 代码如下: #include <stdio.h> char const *func(void) { printf("Printed func string.\n"); return "Pointed func string.\n"; } int main(void) { char const *(*fp)(void) = func; /*print
#include <stdio.h>
char const *func(void)
{
printf("Printed func string.\n");
return "Pointed func string.\n";
}
int main(void) {
char const *(*fp)(void) = func;
/*print statements here*/
return 0;
}
输出:0x7fff36753500
这是不对的
char const *(*fp)(void) = func;
这里,您仅将func
赋值给函数指针。您需要调用它来获取函数返回的字符串
char const *(*fp)(void) = func;
const char *p = fp();
printf("In main: %s", p);
这就是打印字符串的方式。没有用于打印函数指针的标准格式说明符<代码>%p仅用于数据指针,不用于函数指针。因此,使用%p
打印函数指针是非常困难的
如果确实需要打印函数指针,请将其转换为字符指针并打印:
unsigned char *cp = (unsigned char*)&fp;
for(i=0;i<sizeof fp; i++) {
printf("[%08x]", cp[i]);
}
unsigned char*cp=(unsigned char*)&fp;
对于(i=0),将函数指针指向char指针,取消引用,使用unChar char。在Linux上,您可以考虑<代码> dLADDR < /Cord>得到名称,给定全局函数的地址,然后将其转换为字符指针“是误导的。因为您的代码做了一些不同的事情。
unsigned char *cp = (unsigned char*)&fp;
for(i=0;i<sizeof fp; i++) {
printf("[%08x]", cp[i]);
}