在 C 中,我想将一个 uint16_t 数组传递给一个采用 uint8_t 的函数:
bool fctn(uint8_t *data, size_t length);
我有这个数组,它在一个结构内:
typedef struct sStruct sStruct;
struct sStruct{
uint16_t d[10];
}
sStruct myStruct;
所以我这样做:
void test(sStruct structData) {
fctn( (uint8_t*)structData->d[0], 10*sizeof(uint16_t) );
}
长度不是这里的问题,它正在传递数组。如果这个数组不是一个指针,我得到“错误:从不同大小的整数转换为指针”,我怎样才能让它看起来像一个 uint8_t 数组?就该函数而言,一个 uint16_t 数组看起来就像一个大小为 uint8_t 的双长度数组,但我不确定如何告诉编译器这个......当输入已经是一个指针时。
如果数组'd'不在结构内,而只是说一个全局,我会这样做
fctn( (uint8_t*)d, 10*sizeof(uint16_t) );
在传递的结构中为数组传递函数的正确方法是什么?