Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2011, 21:21   #11
sunny_alice
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 46
По умолчанию

Ага, кажется, поняла. Я думала наоборот все *)
Значит если я сделаю pr2^:=1; вместо pr1^:=1;, то выведется 8.5 1.0 1.0?


а почему после вот этой строчки:
Код:
pnt1^.x:=x-1.0;
в результат все равно выводится начальное 0.5?
sunny_alice вне форума Ответить с цитированием
Старый 16.04.2011, 21:48   #12
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Ага, кажется, поняла. Я думала наоборот все *)
Значит если я сделаю pr2^:=1; вместо pr1^:=1;, то выведется 8.5 1.0 1.0?
Да, верно.
Цитата:
в результат все равно выводится начальное 0.5?
Смотри:
Код:
  pnt1^.x:=0.5;
  pnt1^.y:=9.5;
  for i:=1 to 3 do
    begin
      new(pnts[i]);  { Выделяем память }
      pnts[i]^:=pnt1^; { Записываем в ячейку памяти, на которую указывает указатель pnts[i], значение ячейки, на которую указывает указатель pnt1. }
                     { pnt1 и pnts[i] имеют тип - record (запись), поэтому копируются все данные, находящиеся в записи, т.е. значения x и y }
      with pnts[i]^ do
        begin
          pnt1^.x:=x-1.0; { про y я верно написал, а про x опечатка, данная строка эквивалентна строке pnt1^.x:=pnts[i]^.x-1.0 }
{т.е. мы меняем значение pnt1^.x, а в pnts[i]^.x остается старое значение (0.5), т.к. pnt1 и pnts[i] указывают на разные участки памяти. }
          y:=y+2.0;
        end
    end;
  writeln(pnts[1]^.x:5:2, pnts[3]^.y:5:2); { здесь, т.к. мы не меняли значение pnts[1]^.x - оно осталось равным 0.5 }
  readln;
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".

Последний раз редактировалось Daramant; 16.04.2011 в 21:50.
Daramant вне форума Ответить с цитированием
Старый 16.04.2011, 22:02   #13
sunny_alice
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 46
По умолчанию

Значит, если бы вместо
Код:
pnts[i]^:=pnt1^;
было
Код:
pnts[i]:=pnt1;
то значение х изменилось бы по формуле?
sunny_alice вне форума Ответить с цитированием
Старый 16.04.2011, 22:10   #14
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
то значение х изменилось бы по формуле?
Да, все элементы массива pnts и переменная pnt1 указывали бы, на одну и ту же ячейку памяти.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 16.04.2011, 22:21   #15
sunny_alice
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 46
По умолчанию

Daramant, спасибо тебе большое, я разобралась наконец вроде-бы с этими дурацкими указателями))
Не знаю, что бы я без тебя делала))
ps: тему удалить нужно?
sunny_alice вне форума Ответить с цитированием
Старый 16.04.2011, 22:26   #16
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
Daramant, спасибо тебе большое, я разобралась наконец вроде-бы с этими дурацкими указателями))
Не знаю, что бы я без тебя делала))
Не за что).

Цитата:
ps: тему удалить нужно?
Зачем, пусть будет, может у кого еще будут вопросы, он прочитает и тоже разберется.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проболел,много тем пропустил ... не получается разобраться bennya Фриланс 1 15.01.2011 00:09
не получается разобраться в коде ! разъясните пожалуйста! код внутри! Lion_paint Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 09:30
Товарищи, помогите разобраться с указателями scibern Общие вопросы C/C++ 7 11.01.2009 12:28