当前位置: 首页 > news >正文

【C语言】数组下标为啥从0开始?下标越界访问一定报错吗?

本篇文章目录

  • 0. 相关文章
  • 1. 下标从0开始问题
  • 2. 数组下标越界不报错问题

0. 相关文章

  1. 指针与指针变量
  2. 数组名不是首元素地址的的2个例外
  3. 拨开指针和数组名之间的迷雾

1. 下标从0开始问题

  原因是:数组下标访问本质是“指针解引用操作”,而指针又是地址,指针的±运算,+0就是第一个元素的地址。
  例如:
在这里插入图片描述

2. 数组下标越界不报错问题

在C语言中分两种情况:

  1. 越界读是不报错的;
  2. 越界写可能会报错。

越界的检查是一种抽查,就像查酒驾一样。C编译器在数组后面设置一些标志位,如果这些标志位的内存被改变值了,那就报错了,不过如果越界超过这些标志位,编译器也是检查不出来的;这也是越界读不报错的原因,仅仅是访问这个内存地址,C编译器并不会察觉。

越界读不会报错:
在这里插入图片描述
越界写可能不会报错(VS2022的编译器会报错了,并且还会给出具体的提示):
在这里插入图片描述
低些版本的,可能访问a[10],a[11],a[12]才报错,访问a[15]开始可能就不报错了。

http://www.lryc.cn/news/234858.html

相关文章:

  • 机器学习-搜索技术:从技术发展到应用实战的全面指南
  • Axelar、J.P.Morgan Onyx、Apollo 完成概念验证,向跨区块链自动化投资领域探索
  • wpf devexpress添加TreeListControl到项目
  • WPF创建自定义控件编译通过但是找不到资源
  • PHP 中传值与传引用的区别,什么时候传值什么时候传引用?
  • es安装方式
  • 苍穹外卖项目笔记(2)
  • hive更改表结构的时候报错
  • redis运维(六)redis-cli命令
  • JDK1.8 新特性(二)【Stream 流】
  • 阿里云CentOS主机开启ipv6
  • 【Git】第五篇:基本操作(添加文件)
  • vue通过span-method合并列之后,合并列显示在中间位置,根据鼠标滑动跟随展示
  • gRPC 四模式之 一元RPC模式
  • Java GUI实现贪吃蛇游戏
  • Vue3 使用教程
  • 卡方检验-python代码
  • 电磁场与电磁波part4--时变电磁场
  • 电压跟随器
  • 元宇宙3D云展厅应用到汽车销售的方案及特点
  • SourceTree修改Git密码
  • java中的深度复制和浅复制的BUG
  • 计算机毕业设计 基于SpringBoot的车辆网位置信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 集软件库、论坛、社区、工具箱、积分商城、会员体系、在线商城一体的后台系统+HBuilderX 前端软件社区
  • 【解决Qt编译报错:-1: warning: **.so, not found(try using -rpath or -rpath-link)】
  • 关于数据mysql ->maxwell->kafka的数据传输
  • 【linux】查看CPU的使用率
  • 【系统稳定性】1.6 黑屏(三)
  • 《使用EasyExcel在Excel中增加序号列的方法》
  • 【Linux】安全审计-audit