strcpy()返回值问题
时间:2010-09-16 来源:louisin
char*strcpy(char*strDest,constchar*strSrc);在函数里面已经把值从strsrc拷贝到strdest里面了为什么还要返回strdest的指针呢?(我的面试题目,我没想到好的答案) 答:当strcpy失败的时候就能从返回值判断出来。 答:当strcpy失败的时候就能从返回值判断出来。
-------------------------------------
strcpy不管成功失败,都是返回指向目标的指针.
这样做,只是多提供了一个利用结果的手段.
printf("s\n",strcpy(dest,src)); 答:strcpy执行的是将strSrc拷贝到strDest里面
所以它返回就是strDest
答:方便使用 答:嗯嗯,2楼的纠正是对的。
林锐高质量C编程指南原文:
【建议6-2-1】有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,
可以附加返回值。
例如字符串拷贝函数strcpy的原型:
char*strcpy(char*strDest,constchar*strSrc);
strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。
这样做并非多此一举,可以获得如下灵活性:
charstr[20];
intlength=strlen(strcpy(str,“HelloWorld”/DownloadFiles\a\2005-03-14\));
答:增加灵活性如支持链式表达
可以把它的返回值直接作为其它函数的参数 答:为了方便嵌套使用. 答:明白了,多谢各位;) 答:学习! 答:"char*strcpy(char*strDest,constchar*strSrc);在函数里面已经把值从strsrc拷贝到strdest里面了为什么还要返回strdest的指针呢?(我的面试题目,我没想到好的答案)"
如果没有返回strDest指针,那么strDest可能出现你想不到的内容
因为char*strDest可以看作是个字符数组,如果你函数体内改变了数组内容,必须要返回上层函数才能得到处理的值,如果不返回那么你只能改变strDest[0]的值,即指针
相近的还有所以在子函数中给调用函数的指针分配的动态内存,必须用return返回该指针
-------------------------------------
strcpy不管成功失败,都是返回指向目标的指针.
这样做,只是多提供了一个利用结果的手段.
printf("s\n",strcpy(dest,src)); 答:strcpy执行的是将strSrc拷贝到strDest里面
所以它返回就是strDest
答:方便使用 答:嗯嗯,2楼的纠正是对的。
林锐高质量C编程指南原文:
【建议6-2-1】有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,
可以附加返回值。
例如字符串拷贝函数strcpy的原型:
char*strcpy(char*strDest,constchar*strSrc);
strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。
这样做并非多此一举,可以获得如下灵活性:
charstr[20];
intlength=strlen(strcpy(str,“HelloWorld”/DownloadFiles\a\2005-03-14\));
答:增加灵活性如支持链式表达
可以把它的返回值直接作为其它函数的参数 答:为了方便嵌套使用. 答:明白了,多谢各位;) 答:学习! 答:"char*strcpy(char*strDest,constchar*strSrc);在函数里面已经把值从strsrc拷贝到strdest里面了为什么还要返回strdest的指针呢?(我的面试题目,我没想到好的答案)"
如果没有返回strDest指针,那么strDest可能出现你想不到的内容
因为char*strDest可以看作是个字符数组,如果你函数体内改变了数组内容,必须要返回上层函数才能得到处理的值,如果不返回那么你只能改变strDest[0]的值,即指针
相近的还有所以在子函数中给调用函数的指针分配的动态内存,必须用return返回该指针
相关阅读 更多 +