#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(十六进制值),而我试图仅获取它的十六进制值,为什么会发生这种情况?
答案 0 :(得分:2)
它是)0x(十六进制值),而我试图只获取它的十六进制值,为什么会这样?
因为这就是指定IO流的行为方式。
如果要摆脱基本前缀,可以通过将指针转换为整数并使用std::noshowbase
操纵器来实现。整数默认情况下以十进制显示,因此,如果需要十六进制值,请使用std::hex
操纵器。
std::cout << std::noshowbase << std::hex << (std::uintptr_t)y << '\n';
访问y[1]
和其他大于0的索引会导致您的程序具有未定义的行为。