ano*_*non 4 c++ casting operator-overloading c-strings void-pointers
有人可以解释这背后的逻辑吗?为什么void?例如
#include <iostream>
using namespace std;
int main()
{
char c;
cout << (void *)&c;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
cout << (void *)&c;
Run Code Online (Sandbox Code Playgroud)
获取 的地址c,然后将其强制转换为void*,然后打印指针。
这里的目的是打印变量的地址c。但是当将 a 传递char *给std::cout << 它时,它会尝试打印一个以空字符结尾的字符串。为了避免这种情况(并打印实际地址),您必须首先投射到void*。
更多解释:
std::ostream::operator<<具有处理和 的重载 (2)。它假设 a将指向某个最终以空字符结尾的字符串。这只是 C 和 C++ 中使用的约定。char *const char*const char*'\0'
您想避免这种情况,而是使用重载 (7)来打印地址。
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |