c++关于字符串传递的问题

编译通过但是运行以后输入第二个字符串时候出错,也就是第一次调用函数的时候

#include
#include
using namespace std;
class Student{
private:
char num[10];//学号
char name[10];//姓名
public:
void setnum(char nu[ ]){strcpy(num,nu);}
void setname(char na[ ]){strcpy(name,na);}
};
class UserDatabase{
private:
Student *user;
int nElem;//学生的数量
public:
UserDatabase(){nElem = 0;}
void add_record(char *nu,char *na);
};
void UserDatabase::add_record(char *nu,char *na){ //添加学生信息,插入学生后仍然按升序排列
user[nElem].setnum(nu); //设置学号
user[nElem].setname(na); //设置姓名
nElem++;

}
int main(){
UserDatabase abc;
char nu[10];
char na[10];
for(int i = 0 ; i < 3 ; i++){
cin>>nu;
cin>>na;
abc.add_record(nu,na);
}
return 0;
}

你需要为user指针分配空间

 #include<iostream>
using namespace std;
class Student{
private:
    char num[10];//学号 
    char name[10];//姓名 
public:
    void setnum(char nu[ ]){strcpy(num,nu);}
    void setname(char na[ ]){strcpy(name,na);}
};
class UserDatabase{
private:
    Student *user;
    int nElem;//学生的数量
public:
    UserDatabase(){nElem = 0;user=new Student[3];}
    void add_record(char *nu,char *na);
};
void UserDatabase::add_record(char *nu,char *na){ //添加学生信息,插入学生后仍然按升序排列
    user[nElem].setnum(nu); //设置学号
    user[nElem].setname(na); //设置姓名
    nElem++;

}
int main(){
    UserDatabase abc;

    char nu[10];
    char na[10];
    for(int i = 0 ; i < 3 ; i++){
        cin>>nu;
        cin>>na;
        abc.add_record(nu,na);
    }
    return 0;
}