Фактический номер, когда указатель cout - PullRequest
0 голосов
/ 16 октября 2018
#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 голосов
/ 16 октября 2018

это входит) 0x (шестнадцатеричное значение), и я пытался получить только шестнадцатеричное значение этого, почему это происходит?

Потому что именно так IO потокибыло указано, что он ведет себя.

Если вы хотите избавиться от базового префикса, вы можете добиться этого путем преобразования указателя в целое число и использования манипулятора std::noshowbase.Однако по умолчанию целые числа отображаются в десятичном формате, поэтому, если вам нужно шестнадцатеричное значение, используйте манипулятор std::hex.

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

Доступ к y[1] и другие индексы, превышающие 0, приводят кпрограмма имеет неопределенное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...