Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C For循环赋值溢出到另一个变量中_C_Arrays_Sizeof - Fatal编程技术网

C For循环赋值溢出到另一个变量中

C For循环赋值溢出到另一个变量中,c,arrays,sizeof,C,Arrays,Sizeof,我尝试使用for循环为C中的数组赋值(我使用minGW)。起初我试着做: double flag[5] = {0.1}; 但这只将数组中的第一个变量赋值为0.1。然后我试着做一个for循环来分别分配每一个。我不想硬编码的原因是,我希望flag变量的大小能够灵活地适应用户的输入。我当前的代码如下所示: int cnt; double flag[5]; for (cnt = 0; cnt < sizeof(flag); cnt++) { printf(

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

double flag[5] = {0.1};
但这只将数组中的第一个变量赋值为0.1。然后我试着做一个for循环来分别分配每一个。我不想硬编码的原因是,我希望flag变量的大小能够灵活地适应用户的输入。我当前的代码如下所示:

    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);
int-cnt;
双旗[5];
对于(cnt=0;cnt
变量
“size”
从先前确定的6变为垃圾数,我无法修改迭代次数。例如,如果我设置了
cnt
,则没有变化<代码>-2、-5、等无变化。但是,如果我大幅减小大小,它就会陷入无限循环
sizeof(flag)
是40,不像我希望的那样是5,但是除以8也会让它进入一个无限循环。有什么建议吗


这个问题得到了回答,谢谢大家

标记
数组的元素数不是:

sizeof (flag)
但是


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

flag数组的元素数不是:

sizeof (flag)
但是

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

更改:

for (cnt = 0; cnt < sizeof(flag); cnt++) 
for(cnt=0;cnt

(cnt=0;cnt更改:

for (cnt = 0; cnt < sizeof(flag); cnt++) 
for(cnt=0;cnt

(cnt=0;cnt使用

for(cnt=0;cnt
使用

for(cnt=0;cnt
sizeof()
返回
5*sizeof(double)
变量所需的字节数。因此,您的循环运行了5次以上,导致溢出

除了前面的答案中建议的解决方案外,您还可以使用一个宏来表示数组的大小,并使用该宏运行循环直到该值

 #define SIZE 5
 .
 .
 .
 int cnt;
 double flag[SIZE];
 for (cnt = 0; cnt < SIZE; 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);
#定义尺寸5
.
.
.
int-cnt;
双标志[大小];
对于(cnt=0;cnt
sizeof()
返回
5*sizeof(double)
变量所需的字节数。因此,您的循环运行了5次以上,导致溢出

除了前面的答案中建议的解决方案外,您还可以使用一个宏来表示数组的大小,并使用该宏运行循环直到该值

 #define SIZE 5
 .
 .
 .
 int cnt;
 double flag[SIZE];
 for (cnt = 0; cnt < SIZE; 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);
#定义尺寸5
.
.
.
int-cnt;
双标志[大小];
对于(cnt=0;cnt
再次阅读
sizeof
的功能。编辑后的代码在这里工作正常。代码的输出是什么?请再次阅读
sizeof
的功能。编辑后的代码在这里工作正常。代码的输出是什么?