我在努力使用指针和数组。我需要一些有关方法和约定的简单帮助。我确实看到过一些类似的帖子,但是恐怕我仍然需要一些非常真实的示例。

我有一个32位数字的数组,代表UDP数据包中的字对齐数据。我需要以16位数字形式访问此数据以计算标头校验和,而填充数据时则以8位数字形式访问。我有一个静态定义的缓冲区,我将该缓冲区传递给我的例程

alt_u16 calc_udp_header_chksum (alt_u32 hdr[])
{
....

}



有人可以通过alt_u16的示例来帮助我,
alt_u8使用指针和或数组?
这会是什么吗
通过将指针传递到例程将更清晰地编写代码?如果
因此,举个例子会有所帮助。

最佳答案

您可以简单地将hdr强制转换为alt_u16*。像这样:

alt_u16* hrd_word_aligned = (alt_u16*)hdr;


现在,您可以将hrd_word_aligned[0]用作第一个16位值,hrd_word_aligned[1]用作第二个值,依此类推。

类似的代码可用于alt_u8*

函数是否接收alt_u32 hdr[]alt_u32 *hdr都没有关系。

关于c - 与其他大小一样访问32位字的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13915887/

10-09 20:46