用过C语言的strcpy的同学可能有这样一个疑问:为什么是strcpy(目标地址,源地址)这样的顺序呢?这样很不方便呀。通常不都是(源地址,目的地址)吗?“copy A to B”,这样更符合习惯用法呀。
后来我上网查了一下,说是设计者想和memcpy保持同步:
char *strcpy(char* dest, const char *src);
void *memcpy(void *dest, void *src, unsigned n);
如果是(源地址,字节数,目的地址)这样明明更符合习惯呀:“从源地址复制N字节到目的地址”。那么问题来了:为什么memcpy的函数签名是这样设计的呢?