IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Pointers
сообщение
Сообщение #1


человек-нерпа
***

Группа: Пользователи
Сообщений: 286
Пол: Женский

Репутация: -  13  +


Народ, что такое указатели и как с ними работать? Перерыла кучу литры, но там либо нет вообще , либо только правила записи sad.gif


--------------------
I am riding a Thesaurus!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


Указатель я себе представляю как такую веревочку с ярлычком. Эту веревочку можно привязать к какой-то переменной ("взять ее адрес") или просто к какой-то области памяти ("выделить память").


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


А что, интересно, за литру ты рыла, ежели там ничего не было??  :o :o
Стандартный хелпак по паскалю тоже не канает?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


Указатель - это обычный 4-хбайтный integer, название pointer введено для того, чтобы программист и сам паскаль понимали, как его использовать (жаль, что нельзя проводить с ним арифметические операции, но это вообщем-то правильно - чтоб не запутывать код и не вызывать Access Violation-ы). Значение переменной типа pointer может быть равно нулю (для этого сделана спец.константа nil) и тогда считается, что указатель никуда не указывает (хотя практически он указывает на ячейку памяти с адресом 0:0). Если же указатель не нулевой - то это абсолютный адрес в памяти. Чтоб получить содержимое памяти по этому адресу, используется оператор ^, но нужно указать, чего и сколько оттуда брать, так как Паскаль сам знать не может, для него это просто память. Поэтому придуманы типизированные указатели (указатели на типы). Например p:^byte - переменная типа указатель на байт. Теперь если написать write(p^) - паскаль будет знать, что по адресу [p] нужно взять один байт. Впрочем, с указателями легко проходит преобразование типов - можно определить тип pint=^integer и написать write(pint(p)^) - и паскаль возьмет 2 байта с этого адреса (в дельфи - 4) и получится ерунда, потому как неизвестно, что там было во втором байте, а если написать такое в дельфи, то получим скорее всего исключение Access Violation, потому как нефиг лезть в чужое адресное пространство.
Это теория, практическое применение интересует ? я могу много написать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 20:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name