strcpy
2015-09-23 17:41
155 查看
// 复制字符串 记住避免冲突,这里写成 strcopy 而不是 strcpy #include<stdio.h> char * strcopy (char *dest, const char *src); int main() { char string[20]; // 定义一个字符串数组 char *str1="Heloo , zhangqi "; // 对字符指针变量初始化,实际上是把字符串第1个元素的地址(即存放字符串的字符数组的首元素地址)赋给str1 strcopy(string,str1); // 调用strcopy函数 这里 实参是 一个数组名,一个字符指针变量 当实参是数组名,形参是指针变量时,只要保证数据类型一致即可传递。 printf("%s \n",string); return 0; } char * strcopy (char *dest, const char *src) // 来自 glibc的源码,改动了地方 const ptrdiff_t off = dest - s - 1; ptrdiff_t 也就是 signed int // 当实参是数组名,形参是指针变量时,只要保证数据类型一致即可传递。
{ char c; char *s = (char *) src; // char *s 的s,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。 // 这里的 s 指针 指向了 src ,应该是src的首地址吧 const signed int off = dest - s - 1; // 这里不能理解??? tell me why ??? do { c = *s++; // 相当于 c=*(s++); 分开就是 因为 ++在后,所以先 运算后 s+1 s[off] = c; } while (c != '\0'); return dest; }
具体自己分析看看啊!!!
相关文章推荐
- oracle存储过程:一个表的内容转储到多个表
- 9月15日作业
- xml文件浏览器点击显示为下载
- java中包命名常见规则
- 从输入 URL 到页面加载完的过程中都发生了什么事情?
- 初等数论四大定理(威尔逊定理,欧拉定理,中国剩余定理,费马小定理)
- ksh 控制结构
- Java反射机制
- Mysql 数据库无法删除 41 错误
- OpenXml方式读取Excel数据
- perl 手册
- 安卓Imageview控件如何获取网络图片
- js中apply和call的用法以及区别
- android手机唯一识别码
- ASP.NET中多个相同name的控件在后台正确取值
- SVN常用命令
- SVN常用命令
- 防范JAVA内存泄漏解决方案
- 区分DPI、分辨率(PPI)、图像的物理大小、像素宽度
- EXCEL内容很少文件却很大---如何变小