Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 238
от 05.02.2004, 13:30

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 411
Отправлено ответов: 1464
Активность: 356.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 108.56
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 160.12
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 152.1
URL: Программирование на Паскале
[Подробней >>]
 
Vitally
Статус: Доверительный
Общий рейтинг: 155.76
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.55
[Подробней >>]
Strory
Статус: Доверительный
Общий рейтинг: 148.38
[Подробней >>]
 
Tano
Статус: Доверительный
Общий рейтинг: 130.2
[Подробней >>]
samum2000
Статус: Опытный
Общий рейтинг: 121.88
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 410. здравствуйте господа эксперты, у меня вот такой вопрос: зачем в пасе нужны переменые Pointer? уже 3-... (ответов: 8)

Вопросов: 1, ответов: 8


 Вопрос № 410

здравствуйте господа эксперты, у меня вот такой вопрос:
зачем в пасе нужны переменые Pointer? уже 3-й учебник смотрю и нигде не написано, обьясните мне дураку на пальцах...
з.ы.
если не сложно подскажите хороший учебник по пасу, и где его можно найти в сети
заранее спасибо!



Вопрос отправлен: 02.02.2004, 13:26
Отправитель: name

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Здравствуйте, 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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (13)
Perl (2)
Builder / Delphi (18)
Pascal (18)
Basic / VBA (7)
Java / JavaScript (3)
PHP (12)
Криптография (4)
WinAPI (9)
Радиоэлектроника (5)
Пользователю
Windows 95/98/Me (46)
Windows NT/2000/XP (59)
"Железо" (35)
Поиск информации (17)
Администратору
Windows NT/2000/XP (32)
Linux / Unix (12)
Юристу
Гражданское право (16)
Семейное право (10)
Трудовое право (12)
КоАП (11)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное