Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];

Вниз

Работа с указателями   Найти похожие ветки 

 
novai   (2009-10-09 11:14) [0]

Почитал по указатели и работе с ними но не понял: для чего они нужны? для скорости? можно на примере показать?


 
Игорь Шевченко ©   (2009-10-09 11:19) [1]

там, где читал, примеров не было ?


 
Kolan ©   (2009-10-09 11:20) [2]

Указатели нужны, потому что без них никак. Например в Делфи все объекты — это указатели.

Спросите точнее, иначе сюда придется вставить текст какой-нибудь книги.


 
novai   (2009-10-09 11:20) [3]

читал это:
http://transl-gunsmoker.blogspot.com/2009/09/blog-post.html#pointers
но для чего они?


 
DVM ©   (2009-10-09 11:31) [4]


> но для чего они?

Для работы с памятью.


 
Медвежонок Пятачок ©   (2009-10-09 11:33) [5]

> но для чего они?

Чтобы указывать дорогу  и чтобы никто не потерялся и чтобы ничто не потерялось


 
Kolan ©   (2009-10-09 11:35) [6]

По ссылке, имхо, нормально все рассказано. С учетом этого ответ такой: потому что так работает компьютер.


 
Anatoly Podgoretsky ©   (2009-10-09 12:06) [7]

> novai  (09.10.2009 11:20:03)  [3]

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


 
novai   (2009-10-09 12:11) [8]

так я и спросил -для чего они нужны?


 
Медвежонок Пятачок ©   (2009-10-09 13:01) [9]

так тебе и ответили зачем


 
DrPass ©   (2009-10-09 13:02) [10]


> novai   (09.10.09 12:11) [8]
> так я и спросил -для чего они нужны?

Для более гибкой работы с памятью компьютера. Обычная переменная предполагает какой-то известный тип данных, и место в памяти под нее резервируется сразу. В то же время через указатели можно работать с произвольными данными, его можно переставлять на разные участки памяти, память под такие данные (к которым обращаешься через указатель) можно выделять по мере необходимости и высвобождать, когда она уже не нужна и т.д.


 
Юрий Зотов ©   (2009-10-09 15:06) [11]

> novai   (09.10.09 11:14)

Еще пример. Пусть есть большая структура данных:
type
 TMyData = record
   Int: integer;
   ... // И еще много других полей.
  еnd;

и есть большой массив таких структур:
MyArray: array of TMyData;

Стоит задача: отсортировать этот массив по возрастанию поля Int. Понятно, что в процессе сортировки элементы массива будут перемещаться в памяти, а поскольку каждый элемент занимает большой кусок памяти, то сортировка займет много времени.

Теперь делаем немного иначе. Сначала объявляем тип указателя:
type
 PMyData = ^TMyData;
а потом объявляем немного другой массив:
MyArray: array of PMyData;

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

Как Вы думаете, такая сортировка сработает быстрее?


 
Anatoly Podgoretsky ©   (2009-10-10 00:56) [12]

> novai  (09.10.2009 12:11:08)  [8]

Если кратко, то указывать.


 
Германн ©   (2009-10-10 03:55) [13]


> Anatoly Podgoretsky ©   (10.10.09 00:56) [12]
>
> > novai  (09.10.2009 12:11:08)  [8]
>
> Если кратко, то указывать.

Значит ЮЗ потратил зря свои несколько минут?.


 
Anatoly Podgoretsky ©   (2009-10-10 10:03) [14]

> Германн  (10.10.2009 03:55:13)  [13]

Я кратко, он полнее.


 
KilkennyCat ©   (2009-10-10 10:28) [15]

А меня тоже всегда смущало наличие разных выкрутасов с памятью. Иными словами: зачем нужны неуказатели?


 
Стенка   (2009-10-10 11:38) [16]

> novai   (09.10.09 11:14)

До некоторых пор можно работать без указателей.
Но есть вещи, которые без указателей или невозможны, или неэффективны.


 
Virgo_Style ©   (2009-10-10 12:13) [17]

Я на себе прочувствовал полезность указателей, когда в игре "жизнь" в конце каждого шага вместо копирования массива-результата в массив-исходник стал просто менять местами указатели на них %-)


 
novai   (2009-10-12 04:29) [18]

Юрий Зотов ©   (09.10.09 15:06) [11]
спасибо, ситуация прояснилась...


 
Германн ©   (2009-10-12 04:43) [19]


> Юрий Зотов ©   (09.10.09 15:06) [11]
> спасибо, ситуация прояснилась...
>

Действительно прояснилась ли?
Или только кажется?
Книжки, учебники нужно читать.


 
novai   (2009-10-12 04:59) [20]

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


 
Германн ©   (2009-10-12 05:10) [21]


> Книжки, учебники нужно читать.
> уже много...
>

Устал что-ли? Так это только начало.


 
qwer_qwer   (2009-10-12 22:03) [22]

Кстати, есть указатели, и есть ссылки.

Причём грань между ними очень тонкая. ;-)
Вижу в топике все употребляют только одно - указатель. А по контексту это ссылка.
Почему так?


 
qwer_qwer   (2009-10-12 22:04) [23]

Это так... К размышлению. Раз уж всё знаете.


 
MsGuns ©   (2009-10-12 22:28) [24]

>KilkennyCat ©   (10.10.09 10:28) [15]
>зачем нужны неуказатели?

Они и не нужны, ибо их не существует в природе



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.005 c
2-1255353949
Vitaly38
2009-10-12 17:25
2009.11.29
Сортировка массива


15-1254493319
Кто б сомневался
2009-10-02 18:21
2009.11.29
Как антивирус не дает терминировать себя из диспетчера?


4-1205738499
kuzulis
2008-03-17 10:21
2009.11.29
SetWaitableTimer не срабатывает


2-1255614218
dplz
2009-10-15 17:43
2009.11.29
Позволяют ли возможности Delphi...


2-1255596140
Маркабес
2009-10-15 12:42
2009.11.29
SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский