我不理解这个旧的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 );
的内存空间中。