以下是引用我菜119在2011-4-17 15:58:03的发言:
#include
#define N 5
int main ()
{
char s[N];
gets (s);
puts (s);
return 0;
}
在这里系统会在栈区为字符数组分配8个内存位置???????
(至于为什么要分配8个字节的内存位置,这个要从计算机的数据总线和地址总线来考虑的!)????
,也就是说如果我们输入的字符超多了8个的话,????
就会出现一个内存访问错误!也就是访问了栈中其他内存区域。
而第二个的char s[5]是在全局区域中分配内存的,并且全局区域的内存空间会被系统初始化,因此全局内存区域都是程序可以访问的
涨见识了!!!!!!