数组访问越界_数组越界会导致什么问题

数组访问越界_数组越界会导致什么问题什么是数组访问越界?所谓的数组越界,简单地讲就是指数组下标变量的取值超过了初始定义时的大小,导致对数组元素的访问出现在数组的范围之外,这类错误也是C语言程序中最常见的错误之一。在C语言中,数组必须是静态的。换而言之,数组的大小必须在程序运行前就确定下来。由于C语言并不具有类似Java等语言中现有的静态分析工具的功能,可以对程序中数组下标取值范围进行严格检查,一旦发现数组上溢或下溢,都会因抛出异常而终止程序。也就是说,C语言并不检验数组边界,数组的两端都有可能越界,从而使其他变量的数据甚

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

什么是数组访问越界?

所谓的数组越界,简单地讲就是指数组下标变量的取值超过了初始定义时的大小,导致对数组元素的访问出现在数组的范围之外,这类错误也是 C 语言程序中最常见的错误之一。

在 C 语言中,数组必须是静态的。换而言之,数组的大小必须在程序运行前就确定下来。由于 C 语言并不具有类似 Java 等语言中现有的静态分析工具的功能,可以对程序中数组下标取值范围进行严格检查,一旦发现数组上溢或下溢,都会因抛出异常而终止程序。也就是说,C 语言并不检验数组边界,数组的两端都有可能越界,从而使其他变量的数据甚至程序代码被破坏。

因此,数组下标的取值范围只能预先推断一个值来确定数组的维数,而检验数组的边界是程序员的职责。

一般情况下,数组的越界错误主要包括两种:数组下标取值越界与指向数组的指针的指向范围越界。

如何避免?

由于数组的元素个数默认情况下是不作为实参内容传入调用函数的,因此会带来数组访问越界的相关问题,解决问题方法,可以用传递数组元素个数的方法即:用两个实参,一个是数组名,一个是数组的长度。

举例

#include<stdio.h>

void PutArray(int *p, int length)
{ 
   
   // 在此判断入口参数p和length的有效性

   ……

   for(int i=0;i<length;i++)
   printf("%d/t",p[i]);
}

int main()

{ 
   
  int a[3]={ 
   2,4,6} ;
  printf("数组a[3]调用函数PutArray的结果为:/n");
  PutArray(a, sizeof(a)/sizeof(a[0]));
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186862.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python 生成exe文件

    python 生成exe文件在windows下,可以使用pyinstaller打包python程序为exe可执行程序。1、安装pyinstaller在cmd命令行窗口运行以下命令安装pyinstallerpipinstallpyinstaller2、打包python程序在python程序所在目录,执行以下命令#切换到指定目录cd/dpath#正常打包命令pyinstaller-F-w-iico_pathxxx.py-F是将所有文件打成一个exe文件,一般是必写的(注意必须

  • 開始Unity3D的学习之旅

    開始Unity3D的学习之旅

    2021年11月24日
  • JAVA 输入输出

    JAVA 输入输出JAVA输入输出

  • Django(30)Django常用的模板标签

    Django(30)Django常用的模板标签常用的模板标签if标签if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、&

  • 几个SilverLight入门网站「建议收藏」

    几个SilverLight入门网站「建议收藏」 http://info.codepub.com/2008/07/info-20472.htmlhttp://www.cnblogs.com/caodaiming/archive/2008/04/23/1168369.htmlhttp://webuc.net/ddf3/archive/2007/09/30/9515.aspxhttp://blog.csdn.net/atfield/ar

  • XXOO 传说90黑阔论坛

    XXOO 传说90黑阔论坛不说什么了,能射进去的人太多了,我就负责转BY:ahuyangok目标站:www.hacker90.com运气有点好,随便点一个,就那第二个,就日下了,直接命中很简单根据图片找到了eweb的上传,进了后台,发现上传页面被删了,但是我看到了里头又黑阔留下的,加的asa,肯定有人日过,这怎么办呢,直接利用edit2.8漏洞遍历下Admin_UploadFile.a

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号