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

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

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

> указатели, объясните, пожалуйста.
lopata
сообщение 15.12.2009 17:46
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 99
Пол: Женский
Реальное имя: vera

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


Только начала изучать указатели. Не совсем все понимаю. В частности не мог бы кто-нибудь объяснить простой пример :

program Pointer1;
type
TArr = array[1..5] of integer;
var
PArr: лТАгг; {Указатель на массив}
Arr: TArr;
i: integer;
begin
PArr := @Arr; {PArr содержит адрес первого элемента массива Arr}
for i := 1 to 5 do
begin
Write(1,'-й элемент массива = ');
Readln(PArrA[i]); {Учитывая то, что PArr указывает
на первый элемент массива Arr,
PArrA - это аналог идентификатора Arr}
end;
for i := 1 to 5 do
begin
PArr := @Arr[i]; {PArr содержит адрес i-го элемента массива Arr}
Writeln(PArrA[1]); {PArrA - значение i-го элемента массива}
end;
end.


Не понятно почему указывает на первый элемент :
PArr := @Arr; {PArr содержит адрес первого элемента массива Arr}

и

PArr := @Arr[i]; {PArr содержит адрес i-го элемента массива Arr}
Writeln(PArrA[1]); {PArrA - значение i-го элемента массива}


Совершенно непонятно что там делает Единица .Writeln(PArrA[1]);

Объясните пожалуйста и Не ругайтесь, только). Действительно хочу разобраться.

Сообщение отредактировано: lopata - 15.12.2009 17:51
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 15.12.2009 19:04
Сообщение #2


Гость






Цитата
Не понятно почему указывает на первый элемент :
Потому что нумерация элементов массива начинается с 1. И если указатель указывает (хм... А как еще сказать, чтоб не было "масло масляное"?) на массив - это значит, что он указывает на начальный элемент массива (еще точнее - на первый его байт). В твоем случае начальный элемент - первый. Если сделать так:
type
TArr = array[0 .. 4] of integer;
, то PArr будет указывать уже на нулевой (с индексом = 0) элемент массива.

Цитата
Совершенно непонятно что там делает Единица .Writeln(PArrA[1]);
Ты сначала программу поправь, потом продолжим, а то у тебя сейчас ничего компилироваться не будет, а говорить просто так - я не буду... (нет, ну там понятно, что должно быть, но почему ты сразу не проверила, компилируется программа или нет? Кто ж разбирается с примером, не зная, рабочий ли он вообще?)
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 26.07.2025 8:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"