首页 >后端开发 >C++ >如何使用'cout”在 C 中正确打印函数指针?

如何使用'cout”在 C 中正确打印函数指针?

Susan Sarandon
Susan Sarandon原创
2024-12-30 02:07:09464浏览

How Can I Correctly Print Function Pointers in C   using `cout`?

使用 cout 打印函数指针

在 C 中,直接使用 cout 打印函数指针可能会出现问题。相反,建议在打印之前将函数指针转换为 void*。下面的代码片段演示了这一点:

#include <iostream>
using namespace std;

int foo() {return 0;}

int main()
{
    int (*pf)();
    pf = foo;
    cout << "cout << pf is " << pf << endl;
    cout << "cout << (void *)pf is " << (void *)pf << endl;
    printf("printf(\"%p\", pf) is %p\n", pf);
    return 0;
}

输出:

cout << pf is 1  
cout << (void *)pf is 0x100000b0c  
printf("%p", pf) is 0x100000b0c

如上所示,cout 将函数指针隐式转换为 bool,从而产生输出 1。函数的实际地址,必须转换为 void*。

void* 类型的函数指针可以直接使用打印库特。这是因为 void* 是通用指针类型,可以保存任何类型的地址,包括函数指针。

观察成员函数指针

使用以下方式打印成员函数指针void* 由于其更复杂的结构而不起作用。不过,根据 C 标准,函数指针的右值可以转换为 bool。

以上是如何使用'cout”在 C 中正确打印函数指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn