rusyska55011
@rusyska55011

Как получить адрес памяти переменной в массиве, а не адрес индекса массива?

Мне нужен адрес памяти экземпляра line, обращаясь через массив, где все фигуры находятся, однако выдается адрес массива
Box box;
Line line;
AngleLine angleline;
ZigZag zigzag;
Triangle triangle;

Figure figure_collection[] = { box, line, angleline, zigzag, triangle };
	
	
cout << &line << "\n"; // выводит адрес объекта
cout << &figure_collection[1] << "\n"; // Выводит адрес элемента массива
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Все правильно: выводится адрес элемента в массиве. Они два не совпадают, потому что в figure_collection лежит копия line, со своим уникальным адресом в памяти.

Edit: и вы через массив к исходному line никак не обратитесь, только если не смените тип массива на Figure*
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dima20155
you don't choose c++. It chooses you
Вопрос а что такое Figure?
Указатель на базовый класс? тогда у вас в массиве уже лежат указатели, посмотрите их значения.
Массив ссылок запрещен.
Массив объектов типа MyClass? Как и простой массив int они лежат последовательно в памяти, т.е. их адресс это адресс 0 элемента массива соответствующим с смещением.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы