首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

strcpy函数实现中返回指针的有关问题

2013-03-20 
strcpy函数实现中返回指针的问题char* strcpy(char* strDst, const char* strSrc){if(strDst ! NULL && s

strcpy函数实现中返回指针的问题


char* strcpy(char* strDst, const char* strSrc)
{
if(strDst != NULL && strSrc != NULL)
{
char *address = strDst;
while((*strDst ++ = *strSrc ++) != '\0')
{
}
return address;
}
else
{
throw "invalid";
}
}

返回值address是一个局部变量的指针,不是说不能返回局部变量的指针吗?我看到许多地方都是这样写的,这是为什么?
[解决办法]
address指向的是一个有效的地址strDst,函数传进去的地址当然有效,并不是函数内的局部栈变量。
[解决办法]
返回的是strDst。返回指针或引用都是借用传入参数
[解决办法]
引用:
C/C++ code
?



12345678910111213141516

char* strcpy(char* strDst, const char* strSrc) {     if(strDst != NULL && strSrc != NULL)     {         char *address = strDst;         while((*……
理解错了,你得明白为什么说那句话:不能返回局部对象的指针。因为局部对象在函数结束后会被释放,你返回他的地址的话肯定是在随后要使用他,他都被释放了你怎么使用?这里address的指向和strDst相同,就是记录了原始的目标地址(因为后来strDst的值改变了),返回的这个指针正好就是得到拷贝后的内存空间首地址

热点排行