我有一个函数对长度为32的uint8_t
数组执行操作。我想传递一个长度为16的uint16_t
数组,并让它对此执行相同的操作数组,逐字节。
我试过这样做:
uint8_t byteArray[32];
void function(uint16_t *inArray)
{
byteArray = (uint8_t *) inArray;
... do the byte-by-byte operations on byteArray
}
但是我收到了错误:
从类型分配类型'uint8_t [32]'时,不兼容的类型 'uint8_t *'
有谁知道我做错了什么?
答案 0 :(得分:2)
uint8_t byteArray[32];
您无法分配到byteArray
。它是一个数组,因此无法在C中修改。您可以使用指针代替或重新思考您正在做的事情:转换本身就是代码气味,应该避免使用。
既然你提到你有一个函数在运行,那么让函数接受参数比使用全局对象更好吗?
答案 1 :(得分:1)
数组是元素的集合,它不能像C中那样被赋值(甚至更少的类型转换)。你可以用元素循环元素来做,或者重新思考你在做什么,到处都使用相同的类型。