我不理解这个旧的C程序中的语法,也不准备测试代码以了解它的功能。我感到困惑的是数组的连接。我不认为C可以处理这样的自动排版,或者我让它在我的脑海里太难了,因为它是星期五下午…

char wrkbuf[1024];
int r;
//Some other code
//Below, Vrec is a 4 byte struct
memcpy( &Vrec, wrkbuf + r, 4 );

知道这里会发生什么吗?当您连接或添加一个int时wrkbuf会变成什么?

最佳答案

wrkbuf + r&wrkbuf[r]相同
本质上,当在表达式中使用时,会“衰减”为指向第一个元素的指针。然后将wrkbuf添加到其中,这将通过wrkbuf + 4元素推进指针。也就是说,这里没有连接,它在做指针运算。
r从wrkbuf数组复制4个字节,从第r个元素开始复制到memcpy( &Vrec, wrkbuf + r, 4 );的内存空间中。

10-04 18:33