C语言的数组越界问题

C语言的数组越界问题

越界:超出数组下标的位置进行访问。
数组占用了一段连续的内存空间。然后,我们可以通过指定数组下标来访问这块内存里的不同位置。因此,当你的下标过大时,访问到的内存,就不再是这个数组的内存。你访问的,将是其它变量的内存了。

举个例子
简单的数组展示

可以进行编译,未报错。编译器并没有指出错误。

结果显示

但是我们可以看到从a[10]开始,都属于越界访问。注意数组范围是[0,9]

至于为什么不报错,是因为C和C++不进行边界检查,不检查下标是否越界可以提高程序运行的效率。

那么如何能够尽量避免发生数组越界呢?
我所能想到的几种方法如下,仅供参考:

1, 最简单直接的方法:显式指定数组边界;
显示

2, 使用宏来指定数组边界,和第一种道理一样;

宏

3,进行数组检查,设定一个上下界的参数范围
检查

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值