![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Golovastik |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
Если кто может,дайте расшифровку этому:
этому:
этому:
и этому:
из этого кода:
Просто по книге не описуются детали этих строк, сижу минут 30, не могу въехать,что они делают.Желательно было б объяснить весь код,если кто сможет. [COLOR="Blue"]Благодарю за терпение.[/COLOR] |
||||||||||
|
|||||||||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
доступ к n-му элементу посредством арифметических операций с указателем на первый элемент массива. приведенные в цитате записи аналогичны по сути следующим :
если опять не понятно, то следует почитать что есть массивы ... ![]() Это сообщение отредактировал(а) mes - 26.8.2009, 21:30 |
||||
|
|||||
Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
С этим ясно,не ясно вот эта строка.
Это вроде и не масив, потому что масив имеет имя и и тип и индекс, а тут тип и индекс? Чо-то не врубаю. |
|||
|
||||
Galaran |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 25.5.2009 Репутация: нет Всего: 2 |
оператор new создаст в динамической (т.е. во время выполнения программы) памяти массив чисел long размером max и вернет указатель на 1й элемент (присвоит его pprime) и дальше идёт обращение к этому массиву косвенно, через разыменование и смещение указателя |
|||
|
||||
Gordon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 9.7.2006 Репутация: 1 Всего: 6 |
Наверное не индекс, а размер! ![]() -------------------- |
|||
|
||||
Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
А название масива определяется тогда вот этой строкой:
Если масив,тогда он должен иметь имя. Оно определяется указателем на лонг. И получается что имя масива pprime состоящий из элементов [max] |
|||
|
||||
Gordon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 9.7.2006 Репутация: 1 Всего: 6 |
Чтобы работать с массивом, нужно знать адрес первого элемента и количество элементов.
pprime - имя указателя, после выделения памяти указывает на первый элемент массива (если операция new выполнилась удачно) max- количество элементов. -------------------- |
|||
|
||||
Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: -1 Всего: 0 |
Имя масива(динамического) - это указатель на первый элемент масива?
Это сообщение отредактировал(а) Golovastik - 26.8.2009, 22:36 |
|||
|
||||
Gordon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 9.7.2006 Репутация: 1 Всего: 6 |
В какой-то степени, только указателю на первый элемент можно присвоит другое значение, и он уже не будет иметь никакого отношения к массиву...
но, мне кажеться, так делать - не очень красиво... ![]() Это сообщение отредактировал(а) Gordon - 26.8.2009, 23:03 -------------------- |
||||
|
|||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Нет.. массив безымянный и создается в Вашем примере правой частью строки:
после выполнения приведенной части сторки будет создан массив в динамической памяти, но пользоваться мы им пока не сможем. Чтоб получить доступ к массиву, мы присваем указателю адрес первого элемента массива (то что нам вернет new) Например:
Добавлено через 6 минут и 13 секунд И все же лучше В книжке все это подробно разобрано, а на форуме Вы получите лишь обрывки.. Это сообщение отредактировал(а) mes - 26.8.2009, 22:57 |
||||||
|
|||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Golovastik, ты из книг вбил себе в голову, что массив должен иметь имя. Это не так. В программировании массивом называется набор переменных одного типа расположенных последовательно в оперативной памяти. Таким образом зная адрес одного из элементов массива, положение его в массиве, можно получить доступ к любому другому элементу этого массива.
Чтобы не путать массивы типа int arr[10] и int *p = new int[10] вторые называются "динамические массивы", так как их размер определяется во время работы программы. Кстати, я специально сделал тему: Часто задаваемые вопросы. Возможно, там есть то, что тебе нужно. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |