读书人

C语言返回一个指针的有关问题

发布时间: 2012-05-28 17:59:33 作者: rapoo

C语言返回一个指针的问题
刚学C语言不久,看一些函数返回值很不解,例:
char *strcpy(char *strDest, const char *strSrc);
{

assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;

while( (*strDest++ = * strSrc++) != ‘/0’ )
NULL ;

return address ;
}

返回一个指针,这个指针是个局部变量,函数结束后指向的空间释放掉了,指向的内容也应该不是想要的内容了,很不理解?
看一些其他的函数也有类似的实现,想不明白,请各位高手指点一下,谢谢!




[解决办法]
address 是局部变量,但是它指向的内存却不是局部的,
看这句 char *address = strDest;

函数结束后只是address释放了(在栈中),但是它指向的内存还是存在的,所以返回 address并没有错


[解决办法]
其实return就是拷贝了一次,临时对象,~这里即是拷贝了一份指针变量,而且外部调用该函数进行赋值操作,一般进行拷贝构造。而返回的方式得看编译器了。可以研究下栈针结构和实现
[解决办法]

探讨

address 是局部变量,但是它指向的内存却不是局部的,
看这句 char *address = strDest;

函数结束后只是address释放了(在栈中),但是它指向的内存还是存在的,所以返回 address并没有错

读书人网 >C语言

热点推荐