Установка значения массива в структуре устанавливает другое поле в структуре - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть фрагмент кода, как показано ниже, и когда выполняется строка с комментарием (// здесь ошибка), она устанавливает переменную состояния вместо элемента в массиве.

Я переместил состояние intэлемент выше элемента 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 Ответ

3 голосов
/ 25 февраля 2011

Вы должны проверить, что code меньше MAX_NUM.

В вашем конкретном случае code, вероятно, MAX_NUM + 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...