strcpy

//  复制字符串   记住避免冲突,这里写成 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; }

具体自己分析看看啊!!!

 

posted on 2015-09-23 17:41  无悔这一生。  阅读(197)  评论(0编辑  收藏  举报

导航