【发布时间】:2016-11-13 21:06:24
【问题描述】:
我有一个二维数组声明为
static bool array[ROW][COL];
对于一个特定的函数,我想使用字节偏移量来设置一些元素,而不是使用索引,因为这个数组中的布尔值几乎可以保证每个都是 1 个字节。
loff_t *offset = 0;
所以我尝试以下行。
array + *offset = false;
但是,它编译时会出现警告“需要左值作为赋值的左操作数”。这个实现有什么问题,如何根据字节偏移设置数组的元素?
【问题讨论】:
-
旁注:是什么让你如此确定“这个数组中的布尔值几乎保证每个都是 1 个字节”?顺便说一句,它们要么是 1 个字节,要么不是;在这种情况下,“几乎有保证”似乎有点不切实际。
-
除非底层架构有位寄存器,否则
bool(几乎)总是int的大小。 -
这一行:
loff_t *offset = 0;与loff_t *offset = NULL;相同 C 语言不允许添加两个指针 建议:int offset = 0; array + offset = false;,第二个语句与:array[0][offset] = false;相同