已解决
【C语言】数组下标为啥从0开始?下标越界访问一定报错吗?
来自网友在路上 11238123提问 提问时间:2023-11-19 00:46:09阅读次数: 123
最佳答案 问答题库1238位专家为你答疑解惑
本篇文章目录
- 0. 相关文章
- 1. 下标从0开始问题
- 2. 数组下标越界不报错问题
0. 相关文章
- 指针与指针变量
- 数组名不是首元素地址的的2个例外
- 拨开指针和数组名之间的迷雾
1. 下标从0开始问题
原因是:数组下标访问本质是“指针解引用操作”,而指针又是地址,指针的±运算,+0就是第一个元素的地址。
例如:
2. 数组下标越界不报错问题
在C语言中分两种情况:
- 越界读是不报错的;
- 越界写可能会报错。
越界的检查是一种抽查,就像查酒驾一样。C编译器在数组后面设置一些标志位,如果这些标志位的内存被改变值了,那就报错了,不过如果越界超过这些标志位,编译器也是检查不出来的;这也是越界读不报错的原因,仅仅是访问这个内存地址,C编译器并不会察觉。
越界读不会报错:
越界写可能不会报错(VS2022的编译器会报错了,并且还会给出具体的提示):
低些版本的,可能访问a[10],a[11],a[12]才报错,访问a[15]开始可能就不报错了。
查看全文
99%的人还看了
相似问题
- conda创建pytorch环境报错
- Python通过selenium调用IE11浏览器报错解决方法
- kafka本地安装报错
- 【BUG】第一次创建vue3+vite项目启动报错Error: Cannot find module ‘worker_threads‘
- git 构建报错
- Docker build报错总结,版本过新大避雷!
- Mongodb3.4升级高版本mongoTemplate.executeCommand报错The cursor option is required
- duplicate复制数据库单个数据文件复制失败报错rman-03009 ora-03113
- 安装第三方包报错 error: Microsoft Visual C++ 14.0 or greater is required——解决办法
- 邮件|gitpushgithub报错|Lombok注解
猜你感兴趣
版权申明
本文"【C语言】数组下标为啥从0开始?下标越界访问一定报错吗?":http://eshow365.cn/6-38800-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 强缓存和弱缓存
- 下一篇: C++之set/multise容器