一。首先我们来看一下两个函数的基本说明:
strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止)
strcpy的原型为 char *strcpy(char *dest, const char *src)
而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符) memcpy的原型为 void *memcpy(void *dest, const void *src, size_t n);
二。两个函数的具体用法区别:
假如我们定义了这样的一个变量:u8_t src_str[32](前提typedef unsigned char u8_t), 我们期望将一个char *(又或者就是 u8_t的一个字符串)拷贝给src_str,通常我们会想到strcpy或者strncpy两个函数,然而经过观察上边的基本说明,我们可以准确的看出,他们的第一个参数是插入char×,而第二个参数是const char *。所以有这种想法的朋友最好放弃。再回到memcpy这个函数上,她之所以能到达到我们的要求,是因为它的一二参数均是void×类型的,可以自动转化为我们需要的类型。所以:memcpy(src_str, dst_str, len)会成功,而用strcpy或者strncpy将会出错或者报警。
三。以上仅是个人看法,欢迎指正。
阅读(2563) | 评论(0) | 转发(0) |