• 关于链式表达式


    已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc);

    其中strDest是目的字符串,strSrc是源字符串。

    (1)不调用C++/C的字符串库函数,请编写函数

    strcpy char *strcpy(char *strDest, const char *strSrc);

    {

          assert((strDest!=NULL) && (strSrc !=NULL)); // 2分

          char *address = strDest; // 2分

          while( (*strDest++ = * strSrc++) != ‘\0’ ) // 2分

           NULL ;

           return address ; // 2分

    }

    (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?

     答:为了实现链式表达式。 // 2分

    例如 int length = strlen( strcpy( strDest, “hello world”) );

     --------------------------------------------------------------------------------------------------------------------------------

    看到了这个词:链式表达式,之前没有听过,所以去百度了一下,发现有人解释的还算明白:

    -------------------------------------------------------------------------------------------------------------------------------- http://topic.csdn.net/t/20061123/21/5180993.html 1,

    就是方便一些,否则就要这样写:

    char strDest[12];

    strcpy( strDest, “hello world”);

    int length = strlen(strDest);

    什么链式就是一连串写下来的意思。。。

     --------------------------------------------------------------------------------------------------------------------------------

     其实,说白了,就是如果上面的字符串拷贝函数strcopy的返回值是void,那么,上面那句:

     int length = strlen( strcpy( strDest, “hello world”) );

     就要像上面那位的回答,写成好几句了:

    char strDest[12];

     strcpy( strDest, “hello world”);

    int length = strlen(strDest);

    而这种直接返回char *的手段,就是为了后来函数调用者方便而设计的.不用你这么麻烦用上述方法去使用了,而直接可以使用拷贝后的dest字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式

    如此而已.呵呵.

  • 相关阅读:
    C# 重载运算符
    微信网站设置右上角发送、分享的内容——.net版本
    sql server使用中遇到的问题记录
    数据表格,查询、导出共用一个form表单,实现文件流方式下载
    .net开发过程中遇到的错误,及解决办法记录
    python获取随机验证码或者下发激活码
    BeautifulSoup随笔
    python:collections模块
    wait
    python:沙盒(virtualenv)
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2032868.html
Copyright © 2020-2023  润新知