指针相关输出

时间:2010-09-19 15:28:29

标签: c++

class student
{
 char *name;
 int I;
 public:
 student()
 {
  I=0;
  name=new char[I+1];
 }
 student(char *s)
 {
  I=strlen(s);
  name=new char[I+1];
  strcpy(name,s);
 }
 void display()
 {
  cout<<name<<endl;
 }
 void manipulate(student &a,student &b)
 {
  I=a.I+b.I;
  delete name;
  name=new char[I+1];
  strcpy(name,a.name);
  strcpy(name,b.name);
  }
 };
 void main()
 {
  clrscr();
  char *temp="Jack";
  student name1(temp),name2("Jill"),name3("John"),S1,S2;
  S1.manipulate(name1,name2);
  S2.manipulate(S1,name3);
  S1.display();
  S2.display();
  getch();
 }

我多次计算此代码的输出但无法理解。 此代码的输出是:Jill newline John

2 个答案:

答案 0 :(得分:0)

可能你想在操作函数中使用strcat而不是第二个strcpy。

答案 1 :(得分:0)

你的问题在这里:

的strcpy(姓名,a.name);     的strcpy(姓名,b.name);

将Jack + null复制到名称的前五个字节中,然后第二个strcpy将Jill复制到相同的字节上。然后在第二种情况下,同样将John复制到初始字节上。

您可能想使用strcat?