一个C++问题,调试时总出现:0xC0000005: 读取位置 0x00000000 时发生访问冲突”,不懂哪里错了 求解!

2025-02-06 04:27:00
推荐回答(2个)
回答1:

#include
#include
using namespace std;
class Student
{
public:
Student(char *pname,char s,int a);

void set(char *newname,char newsex,int newage);
void display();
int getage();
~Student();
private:
char* name;
char sex;
int age;
};
Student::Student(char *pname=NULL,char s='m',int a=0)
{
name=new char[strlen(pname)+1];
//strcpy(name,pname);
//* name = * pname;
sex=s;
age=a;
}
Student::~Student()
{
delete []name;
}
void Student::set(char *newname,char newsex,int newage)
{
delete []name;
name=new char[strlen(newname)+1];
if(name!=0)
//strcpy(name,newname);
//* name = * newname;
sex=newsex;
age=newage;
}
void Student::display()
{
cout<<"姓名:"< cout<<"性别(m:男,f:女):"< cout<<"年龄:"<}
int Student::getage()
{
return age;
}
void sort( Student s[],int n)
{
Student temp;
for(int i=1;i {
for(int j=0;j {
if(s[j].getage() {
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
}
void main()
{
Student stu[10];
stu[0].set("zhao",'f',18);
stu[1].set("qian",'f',17);
stu[2].set("sun",'m',20);
stu[3].set("li",'m',19);
stu[4].set("zhou",'f',16);
sort(stu,6);
for(int a=0;a<6;a++)
stu[a].display();
}

我只能改到这一步了,你自己再好好看看Pname的指针吧,就是他的错,但我改不出来了。

改出来了吗?若是改出来了,可以告诉我怎么改的吗?谢谢了。

回答2:

可能是编译器的问题,关掉重新载入试试。
但源程序中还是有strcpy的警告