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

【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.kler.cn/a/132826.html

相关文章:

  • 深入理解 C++ 二叉树
  • Codeforces Round 987 (Div. 2) ABCD
  • 性能高于Transformer模型1.7-2倍,彩云科技发布基于DCFormer架构通用大模型云锦天章
  • Cartographer激光雷达slam -20241116
  • FreeSWITCH chat 得到的是 Error! Message Not Sent
  • 计算机网络 (3)计算机网络的性能
  • 【Java 进阶篇】深入理解 JQuery 事件绑定:标准方式
  • OpenAI的多函数调用(Multiple Function Calling)简介
  • Mac 安装 protobuf 和Android Studio 使用
  • 【算法总结】归并排序专题(刷题有感)
  • 在Centos7.9_2207安装CDH6.3.2
  • 清华学霸告诉你:如何自学人工智能?
  • 网工内推 | Linux运维,六险二金,最高30K,IE认证优先
  • 随着大模型中数据局限问题的严峻化,向量数据库应运而生
  • js制作九宫格抽奖功能
  • 如何通过python封装接口商品ID采集商品详情数据
  • 开发知识点-前端-webpack
  • TensorRt推理加速框架Python API服务器部署教程以及运行Helloworld程序
  • 修完这个 Bug 后,MySQL 性能提升了 300%
  • C++加持让python程序插上翅膀——利用pybind11进行c++和python联合编程示例
  • 鸿蒙4.0开发笔记之DevEco Studio如何使用Previewer窗口预览器(一)
  • PDF文件中更改 PDF 文本颜色的最有效解决方案
  • (论文阅读40-45)图像描述1
  • Python几类并行方法比较
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • 一款.NET开源的小巧、智能、免费的Windows内存清理工具 - WinMemoryCleaner