это входит) 0x (шестнадцатеричное значение), и я пытался получить только шестнадцатеричное значение этого, почему это происходит?
Потому что именно так IO потокибыло указано, что он ведет себя.
Если вы хотите избавиться от базового префикса, вы можете добиться этого путем преобразования указателя в целое число и использования манипулятора std::noshowbase
.Однако по умолчанию целые числа отображаются в десятичном формате, поэтому, если вам нужно шестнадцатеричное значение, используйте манипулятор std::hex
.
std::cout << std::noshowbase << std::hex << (std::uintptr_t)y << '\n';
Доступ к y[1]
и другие индексы, превышающие 0, приводят кпрограмма имеет неопределенное поведение.