使用 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中文网其他相关文章!