| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Динамическое выделение |
| Автор: Golovastik 26.8.2009, 21:00 | ||||||||||
Если кто может,дайте расшифровку этому:
этому:
этому:
и этому:
из этого кода:
Просто по книге не описуются детали этих строк, сижу минут 30, не могу въехать,что они делают.Желательно было б объяснить весь код,если кто сможет. [COLOR="Blue"]Благодарю за терпение.[/COLOR] |
| Автор: Golovastik 26.8.2009, 21:41 | ||
С этим ясно,не ясно вот эта строка.
Это вроде и не масив, потому что масив имеет имя и и тип и индекс, а тут тип и индекс? Чо-то не врубаю. |
| Автор: Galaran 26.8.2009, 21:54 | ||
оператор new создаст в динамической (т.е. во время выполнения программы) памяти массив чисел long размером max и вернет указатель на 1й элемент (присвоит его pprime) и дальше идёт обращение к этому массиву косвенно, через разыменование и смещение указателя |
| Автор: Gordon 26.8.2009, 21:58 | ||
Наверное не индекс, а размер! |
| Автор: Golovastik 26.8.2009, 22:02 | ||
А название масива определяется тогда вот этой строкой:
Если масив,тогда он должен иметь имя. Оно определяется указателем на лонг. И получается что имя масива pprime состоящий из элементов [max] |
| Автор: Gordon 26.8.2009, 22:10 |
| Чтобы работать с массивом, нужно знать адрес первого элемента и количество элементов. pprime - имя указателя, после выделения памяти указывает на первый элемент массива (если операция new выполнилась удачно) max- количество элементов. |
| Автор: Golovastik 26.8.2009, 22:33 |
| Имя масива(динамического) - это указатель на первый элемент масива? |
| Автор: Gordon 26.8.2009, 22:43 | ||||
В какой-то степени, только указателю на первый элемент можно присвоит другое значение, и он уже не будет иметь никакого отношения к массиву...
но, мне кажеться, так делать - не очень красиво... |
| Автор: mes 26.8.2009, 22:54 | ||||||
Нет.. массив безымянный и создается в Вашем примере правой частью строки:
после выполнения приведенной части сторки будет создан массив в динамической памяти, но пользоваться мы им пока не сможем. Чтоб получить доступ к массиву, мы присваем указателю адрес первого элемента массива (то что нам вернет new) Например:
Добавлено через 6 минут и 13 секунд И все же лучше В книжке все это подробно разобрано, а на форуме Вы получите лишь обрывки.. |
| Автор: bsa 26.8.2009, 23:11 |
| Golovastik, ты из книг вбил себе в голову, что массив должен иметь имя. Это не так. В программировании массивом называется набор переменных одного типа расположенных последовательно в оперативной памяти. Таким образом зная адрес одного из элементов массива, положение его в массиве, можно получить доступ к любому другому элементу этого массива. Чтобы не путать массивы типа int arr[10] и int *p = new int[10] вторые называются "динамические массивы", так как их размер определяется во время работы программы. Кстати, я специально сделал тему: http://forum.vingrad.ru/forum/topic-269794/kw-faq-c++.html. Возможно, там есть то, что тебе нужно. |