Ошибка при присвоении значения полям записи - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д