Ошибка при присвоении значения полям записи - 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.
Объяснение кода листинга программы
- Объявление типа записи
e
с полямиwho
иwhat
. - Объявление указателя
z
на типe
. - Объявление переменной
p
типаz
. - Очистка экрана с помощью функции
clrscr
. - Выделение памяти под переменную
p
с помощью функцииnew
. - Присваивание значения полю
who
переменнойp
с помощью ссылки^
. - Присваивание значения полю
what
переменнойp
с помощью ссылки^
. - Вывод значения полей
who
иwhat
с помощью функцииwriteln
. - Ожидаемый результат: вывод на экран
ab 10
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д