2012-01-11 4 views
2

Я хочу, чтобы поставить адрес элементов на консоль, но у меня проблемы с ним.Как получить адрес элемента массива?

cout << &text[0] << endl;

, кажется, выводится его vaule, то, что я делаю неправильно здесь?

благодарит

+2

Показать определение 'Text' тоже. – unwind

+0

не уверен, что вы имеете в виду показать определение? lol sorry – nullVoid

+0

@nullVoid показать нам, где 'text' объявлен как переменная – JaredPar

ответ

9

Вам нужно преобразовать в void * для печати с iostreams, и вам нужен безопасный адрес-оператора, который не запутаться перегруженными & -операторов. Другими словами:

std::cout << static_cast<void*>(std::addressof(text[0])) << std::endl; 

Вам нужно <memory> и <iostream>, а также недавний компилятор.


Update: Обратите внимание, что этот код дает статического адрес операнда. Если вы хотите передать базовую ссылку полиморфного объекта, вместо этого вы должны использовать dynamic_cast<void*>(x), но это работает только для полиморфных объектов (т. Е. С виртуальными функциями) и дает адрес фактического динамического объекта.

+0

Требуется ли литье? –

+0

+1, почему '' void * ', необходимый для iostreams? – JaredPar

+0

@ Jared: у iostreams есть перегрузки для таких вещей, как 'char *'. Мы бы этого не хотели, не так ли? –

0

Просто сделай это так:

printf("%p",text); 

вам нужно stdio.h использовать Printf

Смежные вопросы