版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mpp_king/article/details/88763120
int ReturnPoint(char* pStr)
{
string temp = "hello"; //是一个临时变量,函数结束时,就会被释放
//第一种方法
pStr = (char*)temp.c_str(); //pStr最后指向的内容是乱值,因为temp对象被析构,其内容被处理
//第二种方法
strcpy(pStr,(char*)temp.c_str());
//第三种方法
memcpy(pStr,temp,strlen(temp));
return 0;
}
int main()
{
char buf[10];
memset(buf,0,10);
ReturnPoint(buf);
cout<<buf;
return 0;
}
第一种方法,buf为空。
第二种、第三种可以实现值回传。
注:strcpy和memcpy的区别(点击打开原文地址)
1、strcpy:字符串复制,不仅会复制其字符串就连其结尾的字符‘\0’也会被复制过去,其复制遇到\0后就结束了;
2、memcpy:是内存复制,他不仅可以复制字符串还可以复制任意内容,如字符串数组,结构体等;而且memcpy并不会遇到\0就结束,而是复制你在第三个参数中指定的字节数。
相对而言,memcpy要比strcpy用途要广泛的多,一般我们只需要复制字符串就可以选择strcpy,但是数组或者结构体,那就不要犹豫了,直接上memcpy吧。