В этой части вашего кода:
char *name1;
std::cout<<"Enter the student's name > ";
std::cin>>name1;
name1
- это просто переменная, которая может хранить адрес типа char
. Если вы хотите передать данные в эту переменную, попробуйте выделить некоторую память для name1
следующим образом:
char *name1 = new char[50];
Теперь у name1
есть фрагмент непрерывной памяти, в который можно поместить до 50 char
ценности. new
выделит это пространство, а затем даст name1
адрес, по которому существует это пространство.
Ваша программа аварийно завершает работу из-за неопределенного поведения при попытке назначить данные неопределенному адресу.
РЕДАКТИРОВАТЬ: Как кто-то еще заметил, std::string
следует использовать с std::cin
вместо C-строки char*
, так как он не требует выделения памяти и является гораздо более безопасным методом. Память в string
автоматически выделяется и управляется для вас, освобождая вас от ответственности за создание и удаление пространства для массива char
.