我有一种情况,我将一个包含 2 个 1 字节值的数组传递给一个函数,但不知何故,该函数认为该数组的长度为 4 个字节,这大大扰乱了我的位操作。我什至尝试将每个数组值显式转换为uint8
,但无济于事。关于可能发生的事情有什么想法吗?在 Eclipse Mars.1 上使用 cygwin 的 gcc 工具。
typedef char uint8; //char is 1 byte in my system.
void setBitArray(uint8 bitArray[], int first, int last, uint8 type) {
if(first >= 0 && last < sizeof(bitArray) * 8) { // If the block is in bounds
...
}
}
...
int main() {
uint8 bitArray[2] = {(uint8)0, (uint8)0};
setBitArray(bitArray, 0,10, 1);
return 0;
}
编辑
还有一件事。sizeof(bitArray) 在 main() 中产生 2 个字节。