char *ss,*p1,*p2;
ss=new char[getlength()+strlen(s)+1];
p1=ss;
p2=str;
while(*p1=*p2)p1++,p2++;
while(*p1++=*s++);
delete []str;
str=ss;
写了一下注释:
//定义三个字符型指针
char *ss,*p1,*p2;
//new一个getlength()+strlen(s)+1长度的字符数组 并让ss指向它
ss=new char[getlength()+strlen(s)+1];
//p1 再指向---> ss
p1=ss;
//p2 指向---> str
p2=str;
//当p1与p2值相等时,p1,p2后移 注意 这里是赋值语句 p2赋值给p1
while(*p1=*p2) p1++,p2++;
//当* p1与* s相等时,p1++,s++后移 注意 这里是赋值语句 s赋值给p1
while(*p1++=*s++);
//释放掉临时申请的str数组空间
delete []str;
//再将ss赋值给str str中存的就是拼接后的内容了。
str=ss;
希望对题主有所帮助,望采纳!!
ss = new char[getlength() + strlen(s) + 1]; //为ss申请空间,空间长度是要拼接的字符串的和加一(为结束符预留空间)
p1 = ss; //p1指针指向ss的首地址
p2 = str; //p2指针指向str的首地址
while (*p1 = *p2)p1++, p2++; //循环向后移动指针并且将p2指向的内容赋值给p1
while (*p1++ = *s++); //循环将s的内容赋值到p1后续的空间,此循环结束后ss中的数据就会变成str和s的拼接字符串
delete[]str; //清空str
str = ss; //将str换成ss,输出
char* ss, * p1, * p2;
//申请一个长度为getlength() + strlen(s) + 1的数组,赋值给ss,用来存储str和s拼接后的结果
ss = new char[getlength() + strlen(s) + 1];
p1 = ss;//用p1指向ss起始位置,即ss[0]
p2 = str;//用p2指向str的起始位置,即str[0]
//复制str的内容到ss中,遇到*p1 = 0结束循环,即遇到str的结束符结束循环
while (*p1 = *p2)p1++, p2++;
//从上面的循环中出来,p1已经指到了str的结束符位置
//从p1位置开始复制s的内容到ss中
while (*p1++ = *s++);
delete[]str;//释放str数据
str = ss;//将拼接够的数组赋值给str