我有一个缓冲区,其中每个条目的大小为8位:
uint8_t Buffer[10] = {0x12,0x34,0x56,0x78,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6};
我需要做的是创建指向该数组的指针,例如16位和32位指针。举个例子:
uint32_t *x;
x = Buffer;
uint32_t *y;
y = Buffer+4;
uint16_t *z;
z = Buffer+8;
然后每个变量将从数组中读取,例如:
x = 0x78563412
y = 0xf4f3f2f1
z = 0xf6f5
这段代码在功能上完全正常,但是我收到了关于不兼容指针类型的警告。所以我想知道是否有其他方法来解决这个问题,或者我只能接受这些警告?或者我完全错误地编写了这段代码?
请注意,此代码将在单一类型的平台上执行,其中字节顺序始终相同,并且数据类型的大小始终相同。
uint32_t
来确保。你也可以先将其转换为int*,然后使用+1
而不是+4
,这样看起来更好(或者使用数组语法)。 - Karsten Koopchar
不一定是8位。如果您需要固定宽度,请使用uint8_t
和其他固定宽度类型。这样,您就不必解释类型的长度。此外,您的代码可能会引发未定义的行为。 - too honest for this site