c - 我不明白一些旧的 C 数组连接

标签 c arrays memory memcpy

我不理解这个旧的 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/

相关文章:

c - 为什么在 C 中不允许分配给数组?

javascript - 使用 slice() 根据 currentPage 值显示数组的有限部分

Javascript for 数组中的循环行为

memory - 高内存与低内存

c++ - 为分配的内存设置 swappiness

c - 在 C 中的自制字符串结构中使用 realloc - 可能存在内存泄漏?

c - 用C读取txt文件的内容并遵循条件

java - 为什么 toString() 方法在 Java 中的 Array 和 ArrayList 对象之间工作不同

java - 如何清除要进行垃圾收集的对象(HashMap)-Java

java - Java的RAM使用情况与任务管理器所说的不符