这似乎是个好地方。我的问题是,我在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,包括终止空字符。
答案 0 :(得分:1)
memmove
的第三个参数指定要移动的字节数,因此在第二个示例中,您移动了11个字节。您的第一个示例不应该编译,因为在调用memmove
的行上会出现语法错误。
答案 1 :(得分:0)
memmove()的最后一个参数是要移动的字节数 - 在本例中为11
答案 2 :(得分:0)
第三个参数定义要复制的字节数;在第一个示例中,您应该定义要复制的字节数。