实现strcpy的几种操作 与 strcpy为什么有返回值

这篇具有很好参考价值的文章主要介绍了实现strcpy的几种操作 与 strcpy为什么有返回值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

总结:

下面给出网上strcpy的得分版本:

strcpy函数返回值有神马作用?


总结:

1.输入参数src加上const

2.考虑输入指针的合法性

3.考虑返回值

一个标准的strcpy函数:

strcpy是C++语言的一个标准函数 ,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。

下面给出网上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函数可以作为另外一个函数的实参。文章来源地址https://www.toymoban.com/news/detail-402747.html

到了这里,关于实现strcpy的几种操作 与 strcpy为什么有返回值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 后端服务器的响应为什么能够精准的返回给请求它的那个客户端

    正向代理位于客户端和目标服务器之间,代表客户端发送请求;–》代理客户端 反向代理位于目标服务器和客户端之间,代表目标服务器接收请求。–》代理服务端 当客户端发送请求到反向代理服务器时,反向代理服务器会在转发请求给后端服务器之前,记录请求的源IP地址

    2024年02月12日
    浏览(46)
  • Java实体类属性和数据库字段都是大写字母,为什么返回给前端会变成小写字母

    最近我在开发系统的过程中发现了一个问题,我数据库中数据表的字段名使用的全是大写字母,Java实体类中属性也都是大写字母,但是返回给前端的时候所有属性名却变成了小写的。 我查阅资料后解决了问题,因此记录下来,避免以后再次踩坑。 数据库字段的字段名是大写

    2024年02月14日
    浏览(51)
  • 什么是分布式操作系统?我们为什么需要分布式操作系统?

    分布式操作系统是一种特殊的操作系统,本质上属于多机操作系统,是传统单机操作系统的发展和延伸。它是将一个计算机系统划分为多个独立的计算单元(或者也可称为节点),这些节点被部署到每台计算机上,然后被网络连接起来,并保持着持续的通信状态。在分布式操作

    2024年02月16日
    浏览(52)
  • 为什么不用Go开发操作系统?

      操作系统 (OS) 是计算机系统的心脏和灵魂,它管理着计算机的硬件和软件资源,并为用户提供与计算机交互的方式。传统上,C 和 Assembly 等语言因其低开销和 “接近机器码” 的特性而被用于开发操作系统。 但诸如 Go 等高级语言的兴起引入了一些特性,这些特性或许可以使

    2024年02月06日
    浏览(57)
  • Pycharm这个更新索引是个什么操作,为什么每次启动,都会进行?

    点击上方“ Python爬虫与数据挖掘 ”,进行关注 回复“ 书籍 ”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 九重城阙烟尘生,千乘万骑西南行。 大家好,我是皮皮。 一、前言 前几天在Python最强王者交流群【吴超建】问了一个 Pycharm 操作的问题,这里拿出来给大家分

    2024年02月01日
    浏览(56)
  • Linux中vim为什么直接可以操作jar包

    今天上线遇到了令人迷惑的问题,宽哥大佬排查的时候用vim直接查看了jar包,感觉很神奇,所以查了查资料; 学无止境!! JAR 文件的本质: JAR(Java ARchive)文件是 Java 平台上用于封装 Java 类文件、相关的元数据和资源文件的压缩包。JAR 文件使用了 ZIP 文件格式进行压缩和存

    2023年04月26日
    浏览(61)
  • 一个操作让数组处理速度快了5倍,到底是为什么

      概述: 通过对数组进行排序,代码更好地利用了缓存,从而提高了程序的性能。这种现象通常被称为\\\"缓存友好\\\"(cache-friendly)或\\\"空间局部性\\\"(spatial locality) 今天做一个数组数据计算时,发现一个效率问题,给大家分享一下 一个数组排序和不排序时同样的逻辑处理速度是

    2024年03月24日
    浏览(54)
  • WebSocket 是什么原理?为什么可以实现持久连接?

    WebSocket 是一种用于实现持久连接的通信协议,它的原理和工作方式相对复杂,但我们可以尝试以尽可能简单和清晰的方式来解释它。 WebSocket 的原理 在理解 WebSocket 的工作原理之前,我们首先要了解 HTTP 协议的短连接性质。在传统的 HTTP 通信中,客户端发送一个请求到服务器

    2024年02月05日
    浏览(67)
  • Java开发手册中为什么不建议在for循环中使用“+“进行字符串操作

    java开发手册中对于循环体中进行字符串的拼接要求如下: 【推荐】循环体内,字符串的连接方式,使用 StringBuilder 的 append 方法进行扩展。 说明:下例中,反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行 append操作, 最后通过 toString 方法返回

    2024年02月08日
    浏览(52)
  • 【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作

    /etc/security/limits.conf 是一个用于配置用户或用户组 资源限制 的配置文件。这个文件通常用于 设置系统资源的软限制和硬限制 ,以及一些特殊权限。 下面是一些 /etc/security/limits.conf 文件中可能包含的常见配置项: 描述 第一列表示用户和组(@开头),这里的 * 代表所有用户。

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包