我有一个小问题,我尝试理解C中的一个函数,有一行我不明白...... 这是代码:
void *my_memcpy(void *dest, const void *srce, size_t n)
{
unsigned int size_tmp;
size_tmp = 0;
char *tmp_dest = dest;
const char *tmp_srce = srce;
while(size_tmp < n)
{
*tmp_dest++ = *tmp_srce++;
size_tmp ++;
}
return dest;
}
这是具体的一行:
*tmp_dest++ = *tmp_srce++;
谢谢!
答案 0 :(得分:2)
如果您挖掘出运算符优先级表,您会注意到postfix ++
的优先级高于指针 dereference 。所以
*tmp_dest++ = *tmp_srce++;
评估为
*(tmp_dest++) = *(tmp_srce++);
这意味着指针tmp_srce
加1,但旧指针被解除引用。该值被赋值为tmp_dest
的解除引用值,之后该指针也会加1。
换句话说,它是一种将字符从一个字符串复制到另一个字符串的可爱方式,和将两个指针都指向下一个字符串。
答案 1 :(得分:1)
这是一行可以同时执行多项操作: