A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 完美世界 中级黑马   /  2014-6-24 08:44  /  810 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>
int main()
{
   int s[0];
   s[2]=12;
   printf("数组s的大小是%d\n",sizeof(s));
   printf("s[2]=%d\n",s[2]);
}

输出结果是:
数组s的大小是0
s[2]=12

这段代码编译和运行都没有问题,但其中出现的问题我想大家都看出来了吧,有没有人知道缘由的?



2 个回复

倒序浏览
因为C语言的弱语法。。。在C语言中一般是不会检查数组的下标范围的,这样的好处是给了程序员很大的灵活性,更宜于写出高效的代码,当然这样也有很大风险,C语言强调逻辑大于强调语法,若是JAVA就会报错
回复 使用道具 举报
魇影 发表于 2014-6-24 13:04
因为C语言的弱语法。。。在C语言中一般是不会检查数组的下标范围的,这样的好处是给了程序员很大的灵活性, ...

嗯,哦了。
谢啦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马