c++ - 在 C++ 中将输出从十六进制转换为十进制

标签 c++ pointers hex decimal

我试图找到数组元素的内存地址,但输出结果却是十六进制。如果您能告诉我如何将其转换为十进制输出,我将不胜感激。

这是代码,

#include<iostream>
using namespace std;

 int main()
  {
   int a[4];

   cout << "Address of a[0] = " << &a << endl;
   cout << "Address of a[1] = " << &a[1] << endl;
   cout << "Address of a[2] = " << &a[2] << endl;
   cout << "Address of a[3] = " << &a[3] << endl;

   cin.get();

   return 0;
  }

最佳答案

在 C++11 中你可以转换为 uintptr_t , 喜欢

cout << "Address of a[0] = " << static_cast<uintptr_t>(&a) << endl;

uintptr_t 类型专门设计用于表示任何可能的指针,因此该解决方案是可移植的。

我不知道 C++98/03 中的可移植解决方案,尽管通常转换为 size_t (but not always)作品。相关:Converting a pointer into an integer .


编辑

查看http://en.cppreference.com/w/cpp/types/integer并且在 C++ 标准 18.4.1 header 概要 [cstdint.syn] 中,看起来 uintptr_t可选。我不知道是否存在未定义它的实现,以及为什么选择不定义它。欢迎任何评论。

关于c++ - 在 C++ 中将输出从十六进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496212/

相关文章:

c++ - 用动态内容刷新 wxGrid

c# - C# 中的指针递增和链接优先级

assembly - 实际的机器代码在各个方面是什么样子的?

C++ 初始值设定项列表与 union ,为什么不同的结果?

c - 使用单个文件指针打开多个文件

linux - C、不用函数将十六进制数转十进制数

c - 为什么此代码可以将十六进制转换为十进制

c++ - std::shared_ptr 的 use_count() 周围的完整内存屏障是否会使它成为可靠的计数器?

c++ - mongodb C++ 驱动验证

c++ - 我如何在自身内部创建一个类的(静态常量?)实例(即 Color 类)?