我定义了三个数组。一旦分配了第一个数组,我打印出其预期的第一个元素。然后,第二个数组('problematic')被分配。当我重新打印第一个数组的第一个元素时,它神奇地改变为我用数组'problematic'分配的值。情况变得更加奇怪。如果我在两个打印语句之间选择没有分配数组'problematic'而是'working',那么一切都正常运作。
发生了什么?
发生了什么?
#include<stdio.h>
int problem(double variable);
int main(){
problem(1.0);
return 0;
}
int problem(double variable){
int limit1 = 10;
int limit2 = 10;
double bin_bounds[limit1];
double problematic[limit2];
double working[limit2];
// Allocate first array
for (int bin=0; bin<limit1; bin++){
bin_bounds[bin] = variable/limit1 * (bin+1);
}
printf("%f\n\n",bin_bounds[0]); // prints 0.2 as excpected
for (int el=0;el<=limit2;el++){problematic[el]=2.;}
printf("%f\n\n",bin_bounds[0]); // prints 2.0
return 0;
}
el < limit2
。 - pm100