Если вы пытаетесь отключить указатель на volatile тип, даже volatile char указатель, где вы обычно ожидаете, что cout будет печатать строку, вместо этого вы просто получите "1" (если указатель не является нулевым, я думаю). Я предполагаю, что оператор потока потока < шаблон, специализирующийся на неустойчивых указателях, но мой вопрос: почему? Какой вариант использования мотивирует это поведение?
Пример кода:
#include <iostream>
#include <cstring>
int main()
{
char x[500];
std::strcpy(x, "Hello world");
int y;
int *z = &y;
std::cout << x << std::endl;
std::cout << (char volatile*)x << std::endl;
std::cout << z << std::endl;
std::cout << (int volatile*)z << std::endl;
return 0;
}
Вывод:
Hello world
1
0x8046b6c
1