здравствуйте господа эксперты, у меня вот такой вопрос: зачем в пасе нужны переменые Pointer? уже 3-й учебник смотрю и нигде не написано, обьясните мне дураку на пальцах... з.ы. если не сложно подскажите хороший учебник по пасу, и где его можно найти в сети заранее спасибо!
Здравствуйте, name! чтоб с памятью можно было работать. Чтобы хранить указатели на объекты, заранее не известно какие. И многое другое. Почитай книжки по Ц/Ц++ там понятней. Ответ отправлен: 02.02.2004, 13:33 Отправитель: vitya Отвечает sir henry
Приветствую Вас, name! 1. Pointer - это не переменные, а тип переменных. Или, если уж совсем быть точным, pointer - это некий указатель на переменную, не имеющий никакого типа. Придуманы такие штуки для того, чтобы если тип переменной меняется по ходу программы, использовать для разных типов только одну переменную, а не плодить их, как собак недорезаных :). Вот пример: p1, p2: ^Integer; {Указатель на целую переменную} p3: ^Single; {Указатель на переменную с плавающей точкой} p: pointer; {Указатель на переменную без типа} Begin p1:=p2; {Так делать можно - переменные одного типа} p3:=p2; {Так делать нельзя - разные типы} {А вот так можно :)} p:=p1; p:=p3; End. ------- 2. Мне лично нравяться книжки написаные Фароновым В.В.. Писал он много, как по Паскалю, так и по Дельфи. И лучше, конечно, купить такую книгу в печатном виде. Ответ отправлен: 03.02.2004, 04:03 Отправитель: sir henry Отвечает Boriss
Приветствую Вас, name! Куча разных учебников находится по адресу www.turbopascal.tk. Pointer нужен для работы с памятью ЭВМ. Сам Паскаль может распоряжаться памятью в 64К для размещениясвоих данных. Это мало, и на современных ЭВМ есть больше. Так вот для обращения к этой большей памяти и используются указатели (Pointer). Посмотри пример по слову PutImage, например :)) Ответ отправлен: 02.02.2004, 18:20 Отправитель: Boriss Отвечает Vitally
Здравствуйте, name! Pointer - это нетипизированный указатель. Нужда в нем возникает редко. Чаще нужен для того, чтобы покопатся где-то в памяти. Переменной типа Pointer можно присваивать любые типизированные переменные. Например CH-указатель на Char; B-указатель на Byte; P-типа Pointer; Операция Ch:=B - неразрешена, а P:=B; CH:=P; - можно. В данной ситуации интересно и полезно вот что: Операция Writeln(Ch^) - выведет на экран букву, код которой равен B^; Если сделать наоборот: P:=Ch; B:=P; то Writeln(B^) выдаст код буквы, которая находится в Ch^. Ответ отправлен: 02.02.2004, 18:54 Отправитель: Vitally Отвечает Ayl
Приветствую Вас, name! Pointer - нетипизированный указатель. Без введения этого механизма оказалось бы невозможным написание системных утилит на Паскале, а также использование механизма ООП. Вообще, это очень хороший тип и я его очень люблю :-) Если на пальцах, то это указатель на область памяти. Там может находиться все, что угодно - интерпретация содержимого остается на совести программиста :-) См. Приложение
Приложение: Ответ отправлен: 02.02.2004, 18:59 Отправитель: Ayl Отвечает Strory
Приветствую Вас, name! Pointer - Указатель. ИМХО, самый замечательный тип в Паскале. Вообще-то, если писать полный ответ на Ваш вопрос, то это может занять целую книгу. Они (указатели) просто необходимы, если в программе нужно обрабатывать большие объёмы информации. Это связано с тем, что сегмент данных (в котором хранятся все переменные программы) имеет размер "всего" 65535 байт. Этого зачастую не хватает. И тогда без указателей не обойтись. Содержимым указателя является адрес байта памяти. Занимает он 4 байта: сегмент и смещение... Короче, длинная история... Из книг могу порекомендовать "Фаронов В.В. Турбо Паскаль 7.0. Две части." или "Климова Л.М. PASCAL 7.0. Практическое программирование. Решение типовых задач.". Но бесплатно их в инете, кажется, найти не удастся, т.к. они всё ещё хорошо продаются. Про бесплатные
сказать ничего не могу, т.к. никогда не искал. Ответ отправлен: 02.02.2004, 21:30 Отправитель: Strory Отвечает Tano
Добрый день, name! Вообще Pointer - простой указатель на память, используется там, где надо указать на ячейку или область памяти как буффер, не имеющий определенного типа. Ответ отправлен: 03.02.2004, 09:03 Отправитель: Tano Отвечает samum2000
Добрый день, name! Переменная типа Pointer хранит указатель на участок памяти. Обычно их используют для работы с динамической памятью. Значения можно присваивать процедурами GetMem, New, оператором @ и функцией ptr. Подробнее о них можно прочитать в справке Pascal'я. В интернете я хороших книг не видел :(, но если ты встретишь в продаже книгу В.в.Фаронова "Turbo pascal 7.0", то я очень рекомендую её купить - книга толковая, все написано просто и доступно (и про Pointer тоже :)). Ответ отправлен: 04.02.2004, 06:43 Отправитель: samum2000
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.