对我来说有点奇怪,所以我希望你们能帮我一点忙。我的目标基本上是填充一个由 16 个字节组成的数组。此外,我什至有这个数组的结构,我必须创建它
我遇到的问题是,除了此列表中的前两个基本值之外,其他所有值都是通过将它们作为我无权访问的函数中的参数传递来填充的。它不是由我的项目部分制作的,因此我所掌握的有关该功能的唯一信息是它的界面,基本上是
ReturnType GetValues(uint8* index, uint8* ID, uint8* buffer)
。
另一个问题是我如何基本上在这个 16 元素数组中放置另一个数组。请注意,这应该是可扩展的,因此我不能手动将缓冲区数组的所有 10 个元素放入更大的数组中,因为将来我可能必须对 100 字节数组执行相同操作,依此类推.
我所拥有的基本实现是这样的
uint16 index;
uint16 ID;
uint8 buffer[10];
GetValues(&index, &ID, buffer);
uint8 FinalArray[] = {0x01, 0x10, buffer, index, ID};
当然,所有这些都存在问题,首先,缓冲区、ID 和索引在 GetValues 函数中传递,它们将被视为指针,然后我只是随意将它们扔到 FinalArray 中。不幸的是,我是 C 语言新手,因此即使我了解基本算法,该语言的指针和内存管理方面有时仍然让我困惑。我很感谢你们能提供的任何帮助。谢谢!
您可以将数组中给定偏移量处的指针直接传递给函数。
uint8 packet[16] = { 0x01, 0x10 };
GetValues(packet + 12, packet + 14, packet + 2);
(也许用一些宏来替换这些神奇的数字。)