最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

关于链式表达式

工作和技术 crifan 2419浏览 0评论

在阅读注明的林锐的那个《高质量C++/C编程指南》中:

——————————————————————————————————————————–


五、编写strcpy函数(10分)

已知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++) != )     // 2分

       NULL ;

    return address ;                           // 2分

}

2strcpy能把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字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为

链式表达式

如此而已.呵呵.

转载请注明:在路上 » 关于链式表达式

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 终于明白了XX
    otta15年前 (2009-11-17)回复
  2. 原来是这样,谢谢
    比诸都可怜15年前 (2009-04-06)回复
  3. 请问铀235链式反应模拟的程序有么?c++或matlab
    匿名网友16年前 (2008-04-28)回复
82 queries in 0.160 seconds, using 22.14MB memory