Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структура с массивами внутри 
:(
    Опции темы
tol05
Дата 23.10.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Ок. 
Будем считать, что не то же самое, но.., в принципе.., это как посмотреть  smile 




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Rockie
Дата 23.10.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



tol05, Ok. Давай попробую нарисовать.. Может это будет не совсем правильно, но покажет что я имею ввиду:

Так выглядит массив:
array[0]->[1][2][3][4][5]

а вот так - указатель на массив:
pArray*->array[0][1][2][3][4][5]

То есть указатель - это адрес какой-то переменной в памяти. Указатель знает адрес этой переменной и ее тип. А массив может приводиться к указателю, в том числе неявно, поэтому  с массивом можно работать через указатель, как в приведенном тобой примере. Но в отличие от указателя, массив как тип данных также содержит в себе размерность, зная которую этот массив потом можно уничтожить. Указатель такую информацию в себе не несет, при приведении массива к указателю она теряется.  Попробуй добавить к приведенному коду например такой:
Код

    std::cout<<sizeof(cStr)<<std::endl;

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




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
tol05
Дата 23.10.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Говорим только о массиве int-ов, ок?

Массив - это (в моем понимании) последовательный и непрерывный набор ячеек памяти, каждая из которых содержит свой int. "Последовательный и непрерывный" - ключевое слово, иначе нельзя было бы с массивом работать через арифметику указателей, верно?
Так вот, когда мы объявляем массив А (создаем ссылку на массив), то эта ссылка А указывает на начальный адрес размещения массива. Но поскольку массив - непрерывный блок памяти, то:
- ссылка А указывает на начало массива
- первый элемент массива тоже указывает на начало массива
Т.о. и А и А[0] указывают на одну и ту же ячейку памяти.

Указатель на массив и массив - одно и то же, оба они указывают на область памяти, где массив лежит.

Вот это я имел в виду.

Я немного в другом прокололся smile в том, что массив (или указатель на массив, как кому угодно ЭТО называть smile ) приравнял к массиву указателей. Вот здесь, действительно, один массив будет содержать значения int, а второй - адреса ячеек, по которым эти int лежат

P.S. страшными строчками типа 
Код

std::cout<<sizeof(cStr)<<std::endl;
не пугать! Я уже забыл плюсы... Но в этом топике принимают участие те, кто помнят smile
Хотя догадываюсь, что ты на консоль результаты выводишь 

Это сообщение отредактировал(а) tol05 - 23.10.2007, 18:54


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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