c++ - 为什么这个volatile变量的地址一直是1?

标签 c++ iostream implicit-conversion cout memory-address

我想检查我的变量的地址

volatile int clock;
cout << &clock;

但它总是说 x 在地址 1。我做错了什么吗??

最佳答案

iostreams 会将大多数指针转换为 void * 以供显示 - 但 volatile 指针不存在转换。因此,C++ 回退到对 bool 的隐式转换。如果要打印地址,请显式转换为 void*:

std::cout << (void*)&clock;

关于c++ - 为什么这个volatile变量的地址一直是1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39772921/

相关文章:

c++ - 什么是 undefined reference / Unresolved external symbol 错误,我该如何解决?

c++ - 引用的直接初始化和复制初始化

c++ - stringstream::seekp 在 Visual Studio 2015 上无法运行

scala - 如何编写通用隐式转换?

c++ - 在 C++ 中使用 size_type 时,推荐使用 for 循环索引进行算术运算的方法是什么?

c++ - 作为参数传递给函数模板时如何隐式转换类模板对象?

c++ - 获取非实例化结构的地址

c++ - 什么样的 .lib 文件以 "!<arch>"开头?

c++ - 为什么我们会在读取输入后调用 cin.clear() 和 cin.ignore() ?

c++ - 试图写 std :out and file at the same time