Вывести адрес массива 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;

Как насчет просто

cout << &c << endl;

Работает для меня:)

Другие вопросы по тегам