C++字符串拼接函数stringcat
#include <iostream>
using namespace std;
char * stringcat(const char *s1,const char *s2);
void main(){
char *c;
const char *a = "i love ",*b="you";
c=stringcat(a,b);
cout<<c<<endl;
delete [] c;
}
char * stringcat(const char *s1,const char *s2){
char*p,*p0;//p⽤于存储拼接后的字符串,p0备⽤
p=new char[strlen(s1)+strlen(s2)+1];//使⽤new为p申请恰好的堆空间
if(p==NULL){//检测是否申请空间成功
cout<<"Out of space!"<<endl;
}
p0=p;//让P0指向P
while(*s1){//s1中的元素不为'\0'时继续遍历
*p++=*s1++;//将p的元素⽤s1元素挨个填充
c++string类型}
while(*s2){
*p++=*s2++;
}
*p='\0';//尾部加上结束符
return p0;//返回p0
}
疑难点1:*p++=*s1++
*p的⾸地址⾸先被s1的⾸地址赋值,然后 *p++就是⾛向p的下⼀个元素的地址,*s1++同理,然后继续赋值,直到s1到结束符 疑难点2:return p0
p0指向p的⾸地址,所以p0的内容和p是⼀样的,但是p最后指向了结束符,所以返回p就是返回结束符,最后会溢出!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论