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