zoukankan      html  css  js  c++  java
  • strcpy完整版 与 strcpy为什么有返回值

    一个标准的strcpy函数:

    原本以为自己对strcpy还算比较了解,结果面试时还是悲剧了。

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

    2分

    void strcpy( char *strDest, char *strSrc )
    {
    while( (*strDest++ = * strSrc++) != '’ );
    }

    4分

    void strcpy( char *strDest, const char *strSrc ) 
    //将源字符串加const,表明其为输入参数,加2分
    {
    while( (*strDest++ = * strSrc++) != '’ );
    }

    7分

    void strcpy(char *strDest, const char *strSrc) 
    {
    //对源地址和目的地址加非0断言,加3分
    assert( (strDest != NULL) && (strSrc != NULL) );
    while( (*strDest++ = * strSrc++) != '’ );
    }

    10分

    //为了实现链式操作,将目的地址返回,加3分!
    char * strcpy( char *strDest, const char *strSrc ) 
    {
    assert( (strDest != NULL) && (strSrc != NULL) );
    char *address = strDest; 
    while( (*strDest++ = * strSrc++) != '’ ); 
    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/

  • 相关阅读:
    php 生成带图片的二维码
    ajax 请求 添加正在加载中 遮罩层
    uedit上传图片时文件选择框延迟弹出的解决方法
    gulp基本用法
    JS引擎的执行机制
    前端知识体系
    css基础
    gulp使用入门
    AngularJS最佳实践
    Restful API 待更新。。。
  • 原文地址:https://www.cnblogs.com/elisha-blogs/p/4125799.html
Copyright © 2011-2022 走看看