读书人

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

发布时间: 2013-03-20 15:25:24 作者: rapoo

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的值改变了),返回的这个指针正好就是得到拷贝后的内存空间首地址

读书人网 >C++

热点推荐