Я хочу, чтобы поставить адрес элементов на консоль, но у меня проблемы с ним.Как получить адрес элемента массива?
cout << &text[0] << endl;
, кажется, выводится его vaule, то, что я делаю неправильно здесь?
благодарит
Я хочу, чтобы поставить адрес элементов на консоль, но у меня проблемы с ним.Как получить адрес элемента массива?
cout << &text[0] << endl;
, кажется, выводится его vaule, то, что я делаю неправильно здесь?
благодарит
Вам нужно преобразовать в void *
для печати с iostreams, и вам нужен безопасный адрес-оператора, который не запутаться перегруженными &
-операторов. Другими словами:
std::cout << static_cast<void*>(std::addressof(text[0])) << std::endl;
Вам нужно <memory>
и <iostream>
, а также недавний компилятор.
Update: Обратите внимание, что этот код дает статического адрес операнда. Если вы хотите передать базовую ссылку полиморфного объекта, вместо этого вы должны использовать dynamic_cast<void*>(x)
, но это работает только для полиморфных объектов (т. Е. С виртуальными функциями) и дает адрес фактического динамического объекта.
Требуется ли литье? –
+1, почему '' void * ', необходимый для iostreams? – JaredPar
@ Jared: у iostreams есть перегрузки для таких вещей, как 'char *'. Мы бы этого не хотели, не так ли? –
Просто сделай это так:
printf("%p",text);
вам нужно stdio.h
использовать Printf
Показать определение 'Text' тоже. – unwind
не уверен, что вы имеете в виду показать определение? lol sorry – nullVoid
@nullVoid показать нам, где 'text' объявлен как переменная – JaredPar