这个关系到内存里面的栈问题。。
当你
char
s[10];
时候,内存会在栈上分配地址,因为要位对齐,分配的是12个字节的,内存,大至如下,其中
C0
FF
12
00
,是上一个栈地址。0012ffc0
CC
CC
CC
CC
CC
烫烫烫.
0012FF79
CC
CC
CC
CC
CC
CC
CC
烫烫烫.
0012FF80
C0
FF
12
00
输入
12
个
时,
C0
就已经
占用了,
会被清为
00
,但是
0012ff00
还是一个可以
使用的栈地址,
当13
个时,
ff
也给占用了。。因此会出现
程序错误,
内存溢出
是要避免的,破坏数据,也会产生错误,
如果,你的程序时
,
int
i[10];
char
s[10];
scanf("%s",s);
printf("%s\n",s);
你再输入
40个也没事,s
会占用i的地址,只要不破坏
栈地址就行了。不过溢出这个
还是要检查的,程序
安全问题
温馨提示:答案为网友推荐,仅供参考