【发布时间】:2012-07-02 04:08:19
【问题描述】:
为什么下面的程序不打印垃圾值。据我所知,堆栈上分配的数组内存(即在编译时)和堆栈内存包含一些垃圾值。但它不打印垃圾值。它正在打印 1's 。仅当在函数 g() 中,数组 b 的大小 > 数组 a 的大小时,它才会打印垃圾值。当 g() 中的数组大小 > 数组 a 的大小时,它会打印 12 个 1(在这种情况下)并作为垃圾值休息。
void f()
{
int a[12],i=0;
for(i=0;i<12;i++)
a[i]=1;
}
void g()
{
int b[12],i=0;
for(i=0;i<12;i++)
printf("%d\n",b[i]);
}
int main()
{
f();
g();
return 0;
}
分配给数组b的内存和之前分配给数组a的内存一样吗?
【问题讨论】: