求教:Student_admin.exe 中的 0x001f1ba7 处最可能的异常: 0xC0000005: 写入位置 0xbaadf00d 时发生访问冲突
本帖最后由 jackiewan 于 2013-12-24 19:46:36 编辑 再调用void studentList::InsertInfo(int num)函数时,对前面连个变量赋值没有提示错误,当对第三个变量进行赋值时,提示访问冲突,请教下大家是什么原因呀? 我看别人帖子说是初始化问题,可是还是不很懂啊.
#ifndef STUDENT_ADM_H
#define STUDENT_ADM_H
#include <iostream>
using namespace std;
typedef struct
{
int year;
int month;
int day;
}time;
typedef struct
{
int xh;
char name;
time rxsj;
int chengji;
char* zhuanye;
char* techang;
}student;
struct Node
{
student sx;
Node *next;
};
class studentList
{
public:
studentList()
{
head=new Node;
head->next=NULL;
}
~studentList()
{
Node *p;
p=head;
while(head!=NULL)
{
p=head;
head=head->next;
delete p;
}
head=NULL;
}
void InsertInfo(int num);
void DeleteInfo(int a);
void DisplayInfo();
friend ostream& operator<<(ostream& os,const student& s);
private:
Node *head;
};
ostream& operator<<(ostream& os,const student& s)
{
os<<"学号:"<<s.xh<<"\t姓名:"<<s.name<<"\t成绩"<<s.chengji
<<"\t专业:"<<s.zhuanye<<"\t特长"<<s.techang;
return os;
}
void studentList::InsertInfo(int num)
{
Node *p ,*link;
link=new Node;
p=head;
while(num!=0)
{
cout<<"请输入学号:";
cin>>link->sx.xh;
cout<<"请输入姓名:";
cin>>link->sx.name;
cout<<"请输入入学时间:";//执行到这里的时候提示访问出错,前面连个输入没有出错.
//0x001f1ba7 处最可能的异常: 0xC0000005: 写入位置 0xbaadf00d 时发生访问冲突
cout<<"年:";cin>>link->sx.rxsj.year;
cout<<"月:";cin>>link->sx.rxsj.month;
cout<<"日:";cin>>link->sx.rxsj.day;
cout<<"请输入入学成绩:";
cin>>link->sx.chengji;
cout<<"请输入专业:";
cin>>link->sx.zhuanye;
cout<<"请输入特长:";
cin>>link->sx.techang;
while (p!=NULL)
{
p=p->next;
}
p=link;
link->next=NULL;
--num;
}
}
void studentList::DeleteInfo(int a)
{
Node *p,*q;
p=head;
while (p->next->sx.xh!=a)
{
p=p->next;
}
q=p->next;
p->next=q->next;
delete q;
}
void studentList::DisplayInfo()
{
Node *p;
p=head;
while(p!=NULL&&p->next!=NULL)
{
cout<<p->sx<<endl;
}
}
#endif
typedef struct
{
int xh;
char name;
time rxsj;
int chengji;
char* zhuanye;
char* techang;
}student;
typedef struct
{
int xh;
int chengji;
char szName[10];
time rxsj;
char szMajor[50];
char szSpeciality[128];
}student;