c - 在结构中设置数组值在结构中设置不同的字段

标签 c arrays struct

我有一段代码如下,当带有注释的行(//这里是错误)执行时,它设置状态变量而不是数组中的元素。

我将 int status 元素移到结构定义中的 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;

最佳答案

您应该检查 code 是否小于 MAX_NUM

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

关于c - 在结构中设置数组值在结构中设置不同的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5112105/

相关文章:

c++ - 有没有办法在 AVX 上模拟 _m256 类型的整数按位运算?

c - 在 Mac OS X 和 Ubuntu 中对 C 使用 atoi() 时的不同结果

arrays - Lua单词搜索

python - 发送缓冲区的长度并使用 C 从 python 接收它

arrays - 更改数组中结构的值

c - 在 CodeBlocks 中运行 ffmpeg 示例 c 程序时无法识别文件格式

对语言环境和编码感到困惑

c - 从 C 中的双指针数组中删除单行?

java - 从高到低对 int 数组进行排序

C语言: structs and character arrays