该函数memmove定义如下:
void *memmove(void *dest, const void *src, size_t n);
Run Code Online (Sandbox Code Playgroud)
在Linux手册页中,它说:
返回值
memmove()函数返回指向dest的指针.
为什么函数只是定义为void memmove(…)总是返回其中一个输入参数?返回值可以与dest?不同?
或者返回值是否总是dest如此,只是能够以某种创造性的方式组合功能?
标准C库中的许多函数,尤其是用于字符串操作的函数,最显着的是strcpy(),共享以下原型:
char *the_function (char *destination, ...)
Run Code Online (Sandbox Code Playgroud)
这些函数的返回值实际上与提供的相同destination.你为什么要浪费多余的回报价值呢?这样的函数无效或返回有用的东西更有意义.
我唯一的猜测是,为什么将函数调用嵌套在另一个表达式中更容易,更方便,例如:
printf("%s\n", strcpy(dst, src));
Run Code Online (Sandbox Code Playgroud)
还有其他合理的理由来证明这个成语吗?