我试图理解memcpy()C库中定义的函数<string.h>
句法: void *memcpy(void*dst,const void*src,size_t n);
我知道这个函数用于将指针指向的内存的内容复制到指针指向src的位置,dst并返回指针指向的地址dst.
我无法理解以下重要声明memcpy():
memcpy(),内存地址不应重叠,如果重叠,memcpy()则未定义.另一个查询是:传递给函数的第三个参数的size_t n值是否总是一个整数值?
Jab*_*cky 10
从评论中你的问题是你不明白"重叠"意味着什么:
重叠意味着:
这两个存储区域src和dst做的重叠:
但在这里他们没有:
因此,如果你有重叠的内存区域,那么你不能使用,memcpy但你必须使用memmove.
第二个问题:
是的,size_t是无符号整数类型.第三个参数是要复制的字节数,因此它几乎不能是无符号整数类型.