C - memmove()函数 - 我在这个实现中移动了多少字节?

时间:2011-10-29 02:16:38

标签: c memmove

这似乎是个好地方。我的问题是,我在memmove()的实现中移动了什么值(或多少字节)?

int main ()
{
char str[] = "memmove can be very useful......";
memmove (str+15,str+20,/*?*/);
puts (str);
return 0;
}

在下一个例子中,它说我正在移动11个字节。但是什么使它成为11个字节?有人可以解释一下吗?

int main ()
{
char str[] = "memmove can be very useful......";
memmove (str+20,str+15,11); //source and destination are reversed
puts (str);
return 0;
}

谢谢!

编辑:BTW,字符串长度为33,包括终止空字符。

3 个答案:

答案 0 :(得分:1)

memmove的第三个参数指定要移动的字节数,因此在第二个示例中,您移动了11个字节。您的第一个示例不应该编译,因为在调用memmove的行上会出现语法错误。

答案 1 :(得分:0)

memmove()的最后一个参数是要移动的字节数 - 在本例中为11

答案 2 :(得分:0)

第三个参数定义要复制的字节数;在第一个示例中,您应该定义要复制的字节数。