在struct中设置数组值会在struct中设置不同的字段

时间:2011-02-25 00:03:26

标签: c arrays struct

我有一段代码如下,当带有注释的行(这里是// 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;

1 个答案:

答案 0 :(得分:3)

您应该检查code是否小于MAX_NUM

在您的特定情况下,code可能是MAX_NUM + 1