C数组,预设有巨大的值?

时间:2013-05-15 03:24:16

标签: c arrays

这是我的C代码,它给了我一些问题:

int main(){
int Steps = 100;
double Time = 10;
double h = Time/Steps;

double r[Steps+1];
double phi[Steps+1];
double u[Steps+1];
double v[Steps+1];

r[0]=0;
phi[0]=0;
u[0]=0;
v[0]=0;

FILE *fp;
fp = fopen("results.dat", "w");

if(fp == NULL){
    printf("Could not open results.dat \n");
    exit(0);
}

int i;
for(i=0; i<Steps; i++){
    fprintf(fp, "%f, %f \n",r[i], phi[i]);
}

fclose(fp);
}

当我查看dat文件时,几乎所有条目都是0.0,除了少数具有大数字的条目。它似乎是随机的,我还没有说过要为任何东西分配任何值。有谁知道这些数字出现的原因?

2 个答案:

答案 0 :(得分:5)

你要求堆栈上有大块内存,但不要对它们的值进行检查或赋值,从而得到内存中发生的任何事情。我希望有些字节最终会设置更高值的位,从而在读写时提供“随机”数据。请查看memset(3)malloc(3)

答案 1 :(得分:1)

正如其他人提到的那样,你的阵列就在你的阵容中。这些堆栈变量未初始化,并将反映分配它们的堆栈内容。要么将它们移出main,要使它们全局化或初始化它们,例如int [r] = {0};或calloc / malloc,memset数组。