cout指针时的实际数字

时间:2018-10-16 13:46:33

标签: c++ pointers

#include<bits/stdc++.h>

using namespace std;

int main(){
int x;
int *y;

x=2;
y= &x;
cout << y << endl;
cout << y[0] << endl; #this cout shows the value of x ( 2 at this case)
cout << y[1] << endl;
cout << y[2] << endl;
cout << y[3] << endl;
return 0;
}

当我尝试仅指示指针进来时)0x(十六进制值),而我试图仅获取它的十六进制值,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

  

它是)0x(十六进制值),而我试图只获取它的十六进制值,为什么会这样?

因为这就是指定IO流的行为方式。

如果要摆脱基本前缀,可以通过将指针转换为整数并使用std::noshowbase操纵器来实现。整数默认情况下以十进制显示,因此,如果需要十六进制值,请使用std::hex操纵器。

std::cout << std::noshowbase << std::hex << (std::uintptr_t)y << '\n';

访问y[1]和其他大于0的索引会导致您的程序具有未定义的行为。