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

[讨论]strcpy的写法?这样也可以解决方法

2012-02-12 
[讨论]strcpy的写法?这样也可以strcpy的写法是面试中的一个经典考题,今天看了下发现这样的写法也是对的#in

[讨论]strcpy的写法?这样也可以
strcpy的写法是面试中的一个经典考题,今天看了下发现这样的写法也是对的

#include   "stdafx.h "  
char*   str_cpy(char*   str1,char*   str2)  
{  
        str1=str2;  
        return   str1;  
}  
int   main(int   argc,   char*   argv[])  
{  
        char   a[4]= "abc ";  
        char   b[5]= "efgh ";  
        printf( "%s ",str_cpy(a, "bcdsdv "));  
        printf( "%s ",str_cpy(a,b));  
        return   0;  
}  


既然这样也可以,为什么标准答案却是:

                char   *   strcpy(char   *   strDest,const   char   *   strSrc)    
                {    
                                if   ((strDest==NULL)||(strSrc==NULL))   //[1]    
                                                throw   "Invalid   argument(s) ";   //[2]    
                                char   *   strDestCopy=strDest;     //[3]    
                                while   ((*strDest++=*strSrc++)!= '\0 ');   //[4]    
                                return   strDestCopy;    
                }    

大家讨论下



[解决办法]
str1=str2;
是把地址赋过去,即str1和str2指向同一块地址.
有几个后果:
1.str1改变时,str2同时也在改变
2.删除其中一个时,另一个为野指针
3.对两个都删除时,会引起异常
[解决办法]
对于上面的,小弟不才也想说两句,其实如果在函数里面变化,没有变化,原因很简单,只是在函数自己的栈空间从新申请了2个指针,而这两个指针没有复制到原函数的地址,虽然是原函数的地址,但是COPY的.所以没有用,如果你传指针的地址,然后间接引用就可以了.也可以这样写.

楼主也许对指针的间接引用还没有完全明白吧..呵呵.

热点排行