Вывести адрес массива char
int *i = new int(1);
cout << i << endl;
Напечатает адрес целого числа.
char *c="cstring";
cout << c << endl;
cout << &(*c) << endl;
Будут оба печатать "cstring". Я думаю, что это поведение может быть просто объяснено с реализацией ostream& operator<< (ostream& out, const char* s );
в библиотеке IOstream.
Но что делать, если вы действительно хотите напечатать адрес данных, на которые ссылается c?
3 ответа
Решение
cout << reinterpret_cast<void*>(c) << endl;
или просто
cout << (void*)c << endl;
Попробуйте сделать это как const void*
:
cout << static_cast<const void*>(c) << endl;