求各位C++大神为菜鸟看一个小程序

2024-11-23 02:44:41
推荐回答(2个)
回答1:

void Student::getname (char* pname)
{
delete[] pname;
id=new char[strlen(pname)+1];
strcpy(name,pname);
}
错在这了
首先 第一句 你delete了 传递参数的指针“pname”,后面再用到pname时必然出错,应该改为 “name”,还有就是第二句的“id” 同样应该改为“name”,因孝春为这里是要对name进行内存动态分配 。
所以下面的是正确的写法

void Student::getname (char* pname)
{
delete[] name;
name=new char[strlen(pname)+1];
strcpy(name,pname);
}

同样作为一个菜鸟,建议你一下:指针巧孙耐声明后要马上进行初始化,没有指向任何内容时要赋空值,也就是说在构造函数里赋值NULL,delete后同样赋值NULL;delete时尽量先加个判断,若不是NULL再delete。这些小的习惯会对以后的编程有很大的帮助,可以让你省去凯核很多不必要的麻烦。当然如果你只是为了应付考试那就算了,当我没说。

回答2:

哪错? 错误提示是什么?