我有一段代码如下,当带有注释的行(这里是// error)执行时,它设置状态变量而不是数组中的元素。
我将int status元素移动到struct定义中的array_name元素上面并且似乎修复了它,我怀疑我正在更改指针并且缺少一些括号,但我不确定为什么会发生这种情况。
#define MAX_NUM 20
typedef struct FOO_T {
bool abc;
int id;
int array_name[MAX_NUM];
int counter;
int status;
SYSTEMTIME timestamp;
struct FOO_T *next;
}
if (curr->array_name[code] == 0 )
{
curr->counter++;
curr->array_name[code] = curr->counter; //error here
}
我还在不同的函数中初始化整个结构,该函数的一部分是:
thing->id = 0;
for (i = 0; i < MAX_NUM; i++) thing->array_name[i] = 0;
thing->counter = 0;
thing->status = 0;
答案 0 :(得分:3)
您应该检查code
是否小于MAX_NUM
。
在您的特定情况下,code
可能是MAX_NUM + 1