所以,在我的程序中,我有一个变量
uint32_t buffer[16];
但是,有些时候我需要把它当作
uint8_t char_buffer[64];
最明显的解决方案是 union 。但是,出于求知欲,是否有另一种方法告诉编译器我想将该数组视为某种任意类型的数组?类似的东西
((uint8_t *)buffer)[i]
?
最佳答案
类型转换方法是完美的。它将使使编译器将数组视为整数数组。在您的特定情况下,使用
((uint32_t *)buffer)[index];
然而,正如@JerryCoffin 指出的那样,有一个对齐问题。如果您将数组静态分配为 char []
,则它不一定是 4 字节对齐的(整数需要对齐)。如果您确定要避免此问题,请使用 malloc()
,因为它可以保证适当的对齐。
关于c - 在不使用 union 的情况下,如何在 C 中将 64 个字节的数组视为 16 个整数的数组(反之亦然)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11026435/