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

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

2012-05-28 
C语言返回一个指针的问题刚学C语言不久,看一些函数返回值很不解,例:char *strcpy(char *strDest, const ch

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并没有错

热点排行