今天看了一个代码:
int main(){
char buff[10];
printf("%d\n", buff[2]); // 输出一些随机的数字或字符
return(0);
}
我也很久没接触C了,和我印象中C数组的声明有些不一样。我记得数组需要一些初始化的,类似 char buff[10] = {0};
或者 static char buff[10];
。为何上面的数组不需要初始化??还是我本来就记错了??
是不是当char buff[10]
的时候,已经在内存中的什么地方为这个数组分配了空间??当我用gdb调试的时候,print buff,会输出_\000%\000\000\000\000?\177
。
谢谢解疑。
局部变量的空间分配在栈上;没有初始化的时候,取决于编译器的实现,一般不应该做任何假定。