字符串复制strcpy()实现及常见问题
来源:互联网 发布:竞拍源码 编辑:程序博客网 时间:2024/06/06 05:34
原型:char* strcpy(char* des , const char* src),des 和 src 所指内存区域不可以重叠且 des 必须有足够的空间来容纳 src 的字符串。
实现:
char *strcpy(char *des, const char *src){assert( (NULL!= des) && (NULL != src) );char * address = des;while( (* des ++ = * src ++) != '\0' ) ;return address;}
常见问题:
1、为什么返回char*?
答:为了实现链式表达式(就是一连串写下来的意思。。。)。例如:
int len = strlen ( strcpy ( des, "hello") );如果返回类型为void,那就要这样写:
char des[10];strcpy( des, "hello" );int len = strlen( des );
不如链式表达式精简。
2、NULL == des 为什么将常量写在表达式的左边?
答:如果手误将表达式错写成了赋值,则马上报错;如果将表达式写成des != NULL,漏写了一个!,变成了des = NULL,则检查不出错误来,可能会出现意想不到的错误。
3、为什么参数要加const 限定符?
答:如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。
4、关于 = * 和 right++ 这三个操作符的优先级:
* 和 right ++ 的优先级都是2级,是对等的,其次是 = ,由于 right++ 的特点是:滞后使用,造成会先赋值,再指针 ++。
所以 *des ++ = * src ++可以拆分成:
*des = *src;des ++;src ++;
0 0
- 字符串复制strcpy()实现及常见问题
- 复制字符串,实现strcpy功能
- 重写strcpy 实现字符串的复制
- 不用strcpy函数实现字符串复制功能
- c++实现字符串复制函数strcpy()
- 自己实现strcpy字符串复制函数
- 字符串复制函数strcpy的实现算法
- 复制字符串strcpy()函数
- strcpy复制一个字符串
- 编写字符串复制函数strcpy及memcpy函数
- C语言 不使用strcpy 函数实现字符串复制功能
- 字符串的复制strcpy的使用以及自实现
- 字符串连接strcat()实现及常见问题
- 字符串比较strcmp()实现及常见问题
- 字符串函数---strcpy()与strncpy()详解及实现
- 不调用C++/C字符串库函数,实现字符串复制函数strcpy
- C语言strcpy()函数:复制字符串
- C语言strcpy()函数:复制字符串
- AppBarLayout滑动原理
- 频数相关的leetcode:451 Sort Characters By Frequency& 347 Top K Frequent Elements
- Anker—工作学习笔记
- vim 自动添加头注释
- 编译器自动优化——为什么我的C++编译器不调用拷贝构造函数了?
- 字符串复制strcpy()实现及常见问题
- Qt 在mac 下添加第三方 framework的方法
- 简单的fastboot命令:
- tomcat7+jdk的keytool生成证书 配置https
- Unity3D 大型游戏 最后一站 源码 部分重点 整体框架(3)
- MySQL系列—复制表结构的方法小结
- 如何在C#中运行数学表达式字符串
- BZOJ 2693 jzptab 莫比乌斯反演
- 前端工具webpack和gulp