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

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

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

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

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

textual
Листинг программы
uses crt;
 type e = record
         who: string[2];
        what: integer;
 end;
      z=^e;
 var 
    p: z;
 begin clrscr;
    new(p); // память кто выделять будет?
    p^.who:='ab';// теперь здесь  все нормально
    p^.what:=10;
  writeln(p^.who,p^.what);
 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
Похожие ответы