错误1:赋值、写成了等于;
新手上路:
最近,学习C++,完全是新手上路,结果问题百出,今天出现了如下所示错误:
题目:用字符指针、面向对象的方法,输入学生的学号、姓名、成绩,并输出90分以上的同学的信息;
1 #include <iostream> 2 #include <cstdlib> 3 #include <cstring> 4 using namespace std; 5 6 7 class Student 8 { 9 public : 10 void input (int pid ,char *pname ,float s); 11 void display () const; 12 ~Student(); 13 private : 14 int id ; 15 char *name; 16 float score; 17 }; 18 void Student::input(int pid ,char *pname,float s) 19 { 20 id =pid ; 21 score =s; 22 name =new char [strlen(pname)+1]; 23 if (name = NULL) 24 { 25 cerr<<"动态分配存储错误!"<< endl; 26 exit(EXIT_FAILURE); 27 } 28 strcpy(name,pname); 29 } 30 void Student::display()const 31 { 32 if (score >= 90) 33 cout << id <<" "<<name <<" "<<score<<endl; 34 } 35 Student::~Student() 36 { 37 cout << "析构对象student"<<endl; 38 delete [] name; 39 } 40 int main () 41 { 42 int n ; 43 cout <<"请输入学生人数:"; 44 cin >> n; 45 46 int i ,id; 47 float score; 48 char name[10]; 49 Student *pStu =new Student[n]; 50 if (pStu == NULL) 51 { 52 cerr <<"动态分配存储错误!"<<endl; 53 abort (); 54 } 55 for (i= 0;i<n;i++) 56 { 57 cout <<"请输入学号、姓名、成绩:"; 58 cin >> id >> name >> score; 59 pStu[i].input(id,name,score); 60 } 61 62 cout << "输出数据:"<<endl; 63 cout <<"学号"<<" 姓名"<<" 成绩"<<endl; 64 for (i= 0;i<n;i++) 65 pStu[i].display(); 66 delete [] pStu; 67 return 0; 68 }
编译通过,调试过程出现错误,错误产生的原因是,少了一个==,应该如下:
if (name == NULL)
作为一个新手,一定要认真,避免这种微小的错误,造成的损失;继续前行······