为什么`(void*)&`会得到变量的地址?

有人可以解释这背后的逻辑吗?为什么void?例如

#include <iostream>
using namespace std;
int main()
{
    char c;
    cout << (void *)&c;
    return 0;
}

回答

cout << (void *)&c;

获取 的地址c,然后将其强制转换为void*,然后打印指针。

这里的目的是打印变量的地址c。但是当将 a 传递char *std::cout << 它时,它会尝试打印一个以空字符结尾的字符串。为了避免这种情况(并打印实际地址),您必须首先投射到void*


更多解释:

std::ostream::operator<<具有处理和 的重载 (2)。它假设 a将指向某个最终以空字符结尾的字符串。这只是 C 和 C++ 中使用的约定。char *const char*const char*''

您想避免这种情况,而是使用重载 (7)来打印地址。


以上是为什么`(void*)&amp;`会得到变量的地址?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>