Ошибка при присвоении значения полям записи - 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.