我不理解这个旧的 C
程序中的这种语法,也没有设置来测试代码以查看它的作用。我感到困惑的部分是与数组的连接。我不认为 C 可以像那样处理自动类型转换,或者我是不是在周五下午让我的头脑变得太困难了......
char wrkbuf[1024];
int r;
//Some other code
//Below, Vrec is a 4 byte struct
memcpy( &Vrec, wrkbuf + r, 4 );
知道这里会发生什么吗? wrkbuf
连接或添加一个 int 后会变成什么?
最佳答案
wrkbuf + r
等同于&wrkbuf[r]
本质上 wrkbuf
当在表达式 wrkbuf + 4
中使用时“衰减”为指向第一个元素的指针。然后向其中添加 r
,这会使指针前进 r
个元素。即这里没有进行连接,它正在进行指针运算。
memcpy( &Vrec, wrkbuf + r, 4 );
从第 r
个元素开始,从 wrkbuf 数组复制 4 个字节到 Vrec
关于c - 我不明白一些旧的 C 数组连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4902551/