C语言 将数组作为指针通过接口传递,然后用它们填充另一个数组

e5nszbig  于 2023-11-16  发布在  其他
关注(0)|答案(1)|浏览(63)

一个有点奇怪的一个对我来说,所以我希望你偷窥可以帮助我一点。我基本上有一个目标填充数组将由16字节。此外,我甚至有这个数组的结构,我将不得不创建x1c 0d1x
我遇到的问题是,除了这个列表中的前两个基本值,其他所有的值都是通过将它们作为参数传递到一个函数中来填充的,我没有访问权限。这不是我的项目部分所做的,因此我唯一知道的关于这个函数的信息是它的接口,基本上是ReturnType GetValues(uint8* index, uint8* ID, uint8* buffer)
另一个问题是我如何在这个16个元素的数组中放置另一个数组。注意,这应该是可伸缩的,所以我不能手动将缓冲区数组的所有10个元素放入更大的数组中,因为将来我可能不得不对100字节的数组做同样的事情。
我的一个基本实现是这样的

uint8 index[2];
uint8 ID[2];
uint8 buffer[10];

GetValues(index, ID, buffer);

uint8 FinalArray[] = {0x01, 0x10, buffer, index, ID};

字符串
当然,所有这些都有问题,首先,缓冲区,ID和索引在GetValues函数中传递,它们将被视为指针,然后我只是随意地将它们扔到FinalArray中。不幸的是,我是C的新手,因此即使我知道基本算法,指针和内存管理方面的语言仍然逃避我有时。2我感谢任何帮助你们可以提供。3谢谢!

2guxujil

2guxujil1#

你可以将数组中给定偏移量的指针直接传递给函数。

uint8 packet[16] = { 0x01, 0x10 };
                                                 
GetValues(packet + 12, packet + 14, packet + 2);

字符串
假设和uint8是一个 * 字符类型 ,并且IDindex值的字节顺序是正确的(否则您需要类似于htons / ntohs的功能)。
也许一些宏来代替这些神奇的数字。*)

相关问题