strcpy完整版 与 strcpy为什么有返回值
一个标准的strcpy函数:
原本以为自己对strcpy还算比较了解,结果面试时还是悲剧了。
下面给出网上strcpy的得分版本:
2分
void strcpy( char *strDest, char *strSrc )
{
while( (*strDest++ = * strSrc++) != '\0’ );
}
4分
void strcpy( char *strDest, const char *strSrc )
//将源字符串加const,表明其为输入参数,加2分
{
while( (*strDest++ = * strSrc++) != '\0’ );
}
7分
void strcpy(char *strDest, const char *strSrc)
{
//对源地址和目的地址加非0断言,加3分
assert( (strDest != NULL) && (strSrc != NULL) );
while( (*strDest++ = * strSrc++) != '\0’ );
}
10分
//为了实现链式操作,将目的地址返回,加3分!
char * strcpy( char *strDest, const char *strSrc )
{
assert( (strDest != NULL) && (strSrc != NULL) );
char *address = strDest;
while( (*strDest++ = * strSrc++) != '\0’ );
return address;
}
关键是:
为了实现链式操作,将目的地址返回
strcpy函数返回值有神马作用?
看看微软的代码:
char * __cdecl strcpy(char * dst, const char * src)
{
char * cp = dst;
while( *cp++ = *src++ )
; /* Copy src over dst */
return( dst );
}
但是 return( dst );到底有神马作用?
考虑:
int length = strlen( strcpy(str, “Hello World”) );
你就能发现奥秘了。为了实现链式操作,将目的地址返回 原来说的就是这么一会事:
Strcpy函数可以作为另外一个函数的实参。
声明:转载自 http://blog.163.com/xiangzaihui@126/blog/static/166955749201182695220753/
转载于:https://www.cnblogs.com/elisha-blogs/p/4125799.html
strcpy完整版 与 strcpy为什么有返回值相关推荐
- ASCII码表完整版(0 - 255)
目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准 ...
- C++中内存分配、函数调用和返回值问题
在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...
- 浅谈C++中内存分配、函数调用和返回值问题
在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...
- c++ return返回值与内存
在学习函数的时候,发现有些函数返回一个变量,有些返回引用,有些返回指向当前对象的指针,深入挖掘,发现这牵扯到内存相关的东西 1.内存 如下图:32位X86机器的内存布局图,内存主要分为栈.堆.BSS段 ...
- 实现strcpy的几种操作 与 strcpy为什么有返回值
目录 总结: 下面给出网上strcpy的得分版本: strcpy函数返回值有神马作用? 总结: 1.输入参数src加上const 2.考虑输入指针的合法性 3.考虑返回值 一个标准的strcpy函数: ...
- iOS求职之OC面试题完整版---持续更新中...
1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议,Objective-C本身也并不支持抽象基类. 2.#import和#include的区别是什 ...
- 宿舍管理程序c语言,学生宿舍管理软件C语言源代码完整版
<学生宿舍管理软件C语言源代码完整版>由会员分享,可在线阅读,更多相关<学生宿舍管理软件C语言源代码完整版(8页珍藏版)>请在人人文库网上搜索. 1.源程序代码:#includ ...
- 【Android】JNI调用(完整版)
原文出处:http://blog.csdn.net/kangyaping/article/details/6584027#t0 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... ...
- C语言入门基础知识【完整版】
目录 一.数据类型和表达式 1.基本类型 2.构造类型 1)数组类型 2)[结构体类型](#jiegou) 3)[共用体类型](#lianhe) 3.常量 4.运算表达式 1)算术运算表达式: 2)关 ...
最新文章
- js 多个定时器_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(二)
- js给php注册网页添加实时监听,js 实现watch监听数据变化的代码
- 你们的蛙儿子成马云儿子了 阿里巴巴获得《旅行青蛙》独家代理权
- a卡显存测试软件_官方游戏性能堪比RTX 3080 苏姿丰:RX 6000 Big Navi是史上最强A卡...
- android系统里面的mic是哪个app_安利 | 那些错过会后悔一年的法语APP
- 前端学习(2732):重读vue电商网站42之添加富文本编辑器
- 【HDU - 6231】K-th Number(二分,思维)
- 【华为云技术分享】Linux内核补丁源码分析(1)
- 如何自动维护全文索引和目录
- uip UDP 服务器广播模式(客户端可以任意端口,并且主动向客户端发送数据) (转)...
- while(条件) 语句;语句 容易理解错的一点
- 深入学习华为云IOT云平台与LiteOS轻量级物联网系统
- 三对角阵的一维数组表示
- Java期末考试题(个人押题版)
- 使用NRF52xx sniffer抓取BLE包
- 事故赔付额年降高达7成,所托瑞安打造商用车智能驾驶商业化样本
- 数据库:实验五MySQL数据库对象-(视图、索引)
- 2022年CSDN粉丝总数前100名博主
- sql中的大于小于等于的表示
- thinkphp6 通过命令行快速生成多应用模块报 【Command “build“ is not defined.】错误的解决办法