首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言中:static char str[1]和char str[1]的区别,该如何处理

2012-02-04 
C语言中:static char str[1]和char str[1]的区别C语言中:第一段代码staticcharstr[1]gets(str)puts(str)

C语言中:static char str[1]和char str[1]的区别
C语言中:  
第一段代码
static   char   str[1];  
gets(str);  
puts(str);  
运行后,输入abcdef,输出abcdef,不报错。  

第二段代码  
char   str[1];  
gets(str);  
puts(str);  
运行后,输入abcdef,就报错。  

现在不明白   为什么   加上static后   就不报错呢   而且能正确接受 "abcdef "  
多谢


[解决办法]
实际上两个都是内存溢出.
只是第一个的空间在静态数据区,你溢出后的数据没影响到其他的数据,故不报错.
第二个在栈区,你的溢出数据可能覆盖了其他的有用数据.就会产生段错误.

热点排行