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

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

Mary-Kate Olsen
发布: 2024-12-27 22:33:11
原创
199 人浏览过

How Do I Print Function Pointers in C   Using `cout` and `printf`?

使用 cout 和 printf 打印函数指针

在 C 中,可以使用 cout 或 printf 打印函数指针,但根据不同的情况具有不同的行为使用的格式说明符。

cout运算符

默认情况下,cout 将函数指针视为布尔值,并为非空指针打印 1,为空指针打印 0。要打印实际地址,必须将其显式转换为 void*:

cout << (void *)pf;
登录后复制

printf 函数

当将 printf 与 %p 格式说明符一起使用时,函数指针被视为指针,它们的地址被打印在十六进制:

printf("%p", pf);
登录后复制

函数指针作为布尔值

函数指针在 C 中确实被视为布尔值。这是由于布尔转换规则允许将指针强制转换为 bool,其中非空指针的计算结果为 true,空指针的计算结果为 false。如果不考虑此行为,可能会出现意外情况。

成员函数指针

打印成员函数指针更为复杂,因为它们不是简单的指针。然而,可以使用一个技巧来打印成员函数的地址:

cout << (void *)(*(int **)&pf);
登录后复制

这利用了成员函数的地址存储在函数指针的第二个元素中的事实,并进行强制转换使其作废*。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板