| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 502 人关注过本帖
标题:关于字符数组越界仍能正确存储并显示的疑问
只看楼主 加入收藏
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
结帖率:31.58%
收藏
 问题点数:0 回复次数:2 
关于字符数组越界仍能正确存储并显示的疑问
#include <stdio.h>
void main()
{
    char s[5];
    int i;
    scanf("%s",s);/*输入abcdef,明显越界*/
    printf("%s\n",s);
    /*结果仍正常显示abcdef*/
    for(i=0;i<5;i++)
        printf("%c",s[i]);
    /*结果正常显示abcde*/
}
请问定义char s[5]后,系统开辟了5个字节的存储空间,为何越界仍能正确存储并显示?并且还能正确在末尾自动加'\0'?
搜索更多相关主题的帖子: include 存储 越界 
2012-06-08 13:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
这是C语言的一个特点 不检查数组越界

当时的考虑是效率 灵活性等原因 优点也是这些

缺点么 不安全 导致了堆栈溢出等问题

2012-06-08 13:31
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 2楼 zklhp
如是我闻

梅尚程荀
马谭杨奚







                                                       
2012-06-08 15:03
快速回复:关于字符数组越界仍能正确存储并显示的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014900 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved