c - for 循环赋值溢出到另一个变量

标签 c arrays sizeof

<分区>

我正在尝试使用 for 循环为 C 中的数组赋值(我正在使用 minGW)。起初我尝试这样做:

double flag[5] = {0.1};

但这只将数组中的第一个变量赋值给 0.1。然后我尝试做一个 for 循环来单独分配每个。我不想对其进行硬编码的原因是因为我希望标志变量的大小能够灵活地适应用户的输入。我当前的代码如下所示:

    int cnt;
    double flag[5];
    for (cnt = 0; cnt < sizeof(flag); cnt++) {
        printf("sizeof(flag) is %d\n",sizeof(flag));
        printf("size is equal to %d and cnt is %d\n",size,cnt);
        flag[cnt] = 0.1;
    }
    printf("size is equal to %d\n",size);

变量"size"从之前确定的 6 变为垃圾编号,我无法修改迭代次数。例如,如果我设置 cnt < sizeof(flag)-1 ,没有变化。 -2,-5,等没有变化。但是,如果我大幅减小尺寸,它就会陷入无限循环。 sizeof(flag)是 40,而不是我想要的 5,但是除以 8 也会以某种方式使它进入无限循环。有什么建议吗?

这个问题已经回答了,谢谢大家!

最佳答案

flag数组的元素个数不是:

sizeof (flag)

但是

sizeof flag / sizeof *flag

前者是数组的字节大小,后者是数组的字节大小除以数组的一个元素的字节大小。

关于c - for 循环赋值溢出到另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24877065/

相关文章:

arrays - 直接访问R中data.frame中的Vector元素?

c - 为什么数组的元素比类型大?

c - 使用 sigaction(), c

c - 使用信号和 sigpipe

c - 在 C 中使用没有回调的 SIGINT 信号

c - C 中结构体大小的解释?

c - 为什么在 32 位系统上包含单个字符的结构没有填充到大小 4?

c - GCC:在每条指令之后强制调用函数(用于多线程测试)?

javascript - 在 OL 中的页面加载/刷新时显示本地存储

java 2d 数组比较更新