Ошибка при присвоении значения полям записи - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. uses crt;
  2. type e = record
  3. who: string[2];
  4. what: integer;
  5. end;
  6. z=^e;
  7. var
  8. p: z;
  9. begin clrscr;
  10. p^.who:='ab';// здесь вылазит ошибка"Program recieved signal SIGSEGV Segmentation fault"
  11. p^.what:=10;
  12. writeln(p^.who,p^.what);
  13. end.
почему возникает ошибка?

Решение задачи: «Ошибка при присвоении значения полям записи»

textual
Листинг программы
  1. uses crt;
  2.  type e = record
  3.          who: string[2];
  4.         what: integer;
  5.  end;
  6.       z=^e;
  7.  var
  8.     p: z;
  9.  begin clrscr;
  10.     new(p); // память кто выделять будет?
  11.     p^.who:='ab';// теперь здесь  все нормально
  12.     p^.what:=10;
  13.   writeln(p^.who,p^.what);
  14.  end.

Объяснение кода листинга программы

  1. Объявление типа записи e с полями who и what.
  2. Объявление указателя z на тип e.
  3. Объявление переменной p типа z.
  4. Очистка экрана с помощью функции clrscr.
  5. Выделение памяти под переменную p с помощью функции new.
  6. Присваивание значения полю who переменной p с помощью ссылки ^.
  7. Присваивание значения полю what переменной p с помощью ссылки ^.
  8. Вывод значения полей who и what с помощью функции writeln.
  9. Ожидаемый результат: вывод на экран ab 10.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы