Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с массивом. 
V
    Опции темы
Vermaxt
Дата 19.2.2010, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 4.8.2007

Репутация: нет
Всего: нет



Проблема следующая. Например создаем целочисленный массив. Как известно адрес первого элемента массива есть адрес всего массива. Тут проблем нет &array[0] и используем или присваиваем его куда нужно. Так же известно что название массива есть указатель на первый элемент массива. Что собственно интересно - Резервируется ли память под array (указатель на первый элемент массива)? Или как то это все происходит по-другому? 
PM MAIL   Вверх
andrew_121
Дата 19.2.2010, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(Vermaxt @  19.2.2010,  09:36 Найти цитируемый пост)
Как известно адрес первого элемента массива есть адрес всего массива.

справедливо только для вектора или Си массивов.

Цитата(Vermaxt @  19.2.2010,  09:36 Найти цитируемый пост)
Резервируется ли память под array (указатель на первый элемент массива)?

поясните.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 19.2.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Vermaxt @  19.2.2010,  09:36 Найти цитируемый пост)
Так же известно что название массива есть указатель на первый элемент массива.
Интересно, и кому же это известно? "Имя массива" без вопросов конвертируется в указатель на первый элемент массива. Но не является указателем. Таким образом и память под этот "указатель" не выделяется - компилятор сам знает, какой адрес/смещение нужно подставлять.

PM   Вверх
Vermaxt
Дата 19.2.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 4.8.2007

Репутация: нет
Всего: нет



bsa,  т.е.  это что то типа директивы #define? При обработки препроцессором значение подставляется, но память не расходуется.
PM MAIL   Вверх
mes
Дата 19.2.2010, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Vermaxt @  19.2.2010,  14:47 Найти цитируемый пост)
 это что то типа директивы #define? При обработки препроцессором значение подставляется, но память не расходуется. 

препроцессор тут не при чем, все происходит в компиляторе.
 
Для статического массива компилятор знает по какому смещению он будет расположен, и всегда подставляет адрес.
То же самое он делает для обычной переменной. 
Но вот когда массив передается в функцию, то создается указатель, который инициализируется значением адреса массива.

Добавлено через 5 минут и 32 секунды
Цитата(Vermaxt @  19.2.2010,  08:36 Найти цитируемый пост)
Так же известно что название массива есть указатель на первый элемент массива

название массива (как и переменной) грубо говоря лишь удобное представление смещения, т.е в процессе компиляции вместо первого всегда подставляется второе.

На самом деле правда с именем ассоциировано не только смешение, а еще куча доп. информации, но для текущего вопроса это не принципиально.
smile



--------------------
PM MAIL WWW   Вверх
Vermaxt
Дата 19.2.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 4.8.2007

Репутация: нет
Всего: нет



mes, Все стало понятно. Спасибо.
PM MAIL   Вверх
bsa
Дата 19.2.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
Vermaxt, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.