C语言陷阱与缺陷之数组越界访问详解

 更新时间:2022年02月24日 11:10:35   作者:beating-fish  
这篇文章主要为大家详细介绍了C语言的数组越界访问,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

1.问题引入

一道经典的笔试题来了,请做好准备!!!

试问以下代码在Visual studio 2019环境下执行结果?原因?

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[10] = {0};
    for(i=0; i<=12; i++)
   {
        arr[i] = 0;
        printf("Hello World!\n");
   }
    return 0;
}

运行结果:

想不到吧为什么会造成死循环里???

疑惑鸭???

这样一个看似浅显的代码却存在一个大大的陷阱等着你,让我们一起来分析哈!

2、问题分析

(1)理论分析

很显然出现了数组越界访问但是为什么会造成死循环里???

首先我们知道局部变量在存在栈区中,存储方式为先使用高地址再使用低地址,然而数组存储方式开辟一块地址然后地址由低到高依次存储。

这样在越界访问时可能会导致问题!!!

数组越界访问到Arr[12]会改变i的值导致了死循环哈!!!

(2)调试验证

由此可见i的地址和arr[12]的地址是一样的,这样在数组越界访问中在修改arr[12]的值时把i的值改掉了,之后每次循环到此处都产生同样的结果造成了死循环哈!!!

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!  

相关文章

  • OpenCV实现双边滤波算法

    OpenCV实现双边滤波算法

    这篇文章主要为大家详细介绍了OpenCV实现双边滤波算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C/C++实现磁盘相关操作的示例代码

    C/C++实现磁盘相关操作的示例代码

    这篇文章主要为大家详细介绍了C/C++如何实现磁盘相关操作,例如遍历磁盘容量、实现磁盘格式化、移除指定磁盘等,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • Qt实现矩形大小任意缩放的示例代码

    Qt实现矩形大小任意缩放的示例代码

    这篇文章主要介绍了Qt如何实现在窗口上绘制任意大小的矩形,并且通过边角的拖曳按钮可改变矩形大小,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-06-06
  • MFC创建模态对话框和非模态对话框的方法

    MFC创建模态对话框和非模态对话框的方法

    这篇文章主要介绍了MFC创建模态对话框和非模态对话框的方法,需要的朋友可以参考下
    2014-07-07
  • QT实现简单音乐播放器

    QT实现简单音乐播放器

    这篇文章主要为大家详细介绍了QT实现简单的音乐播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C++数据结构之单链表的实现

    C++数据结构之单链表的实现

    线性表的链式存储又称为单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素。本文将用C++实现单链表,需要的可以参考一下
    2022-05-05
  • C++中的覆盖和隐藏详解

    C++中的覆盖和隐藏详解

    这篇文章主要介绍了C++中重载、重写(覆盖)和隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下,希望能够给你带来帮助
    2021-08-08
  • C++如何实现广义表详解

    C++如何实现广义表详解

    广义表是非线性结构,其定义是递归的。那么下面跟着小编一起看看如何用C++实现广义表,有需要的可以参考借鉴。
    2016-08-08
  • C++的继承特性你了解吗

    C++的继承特性你了解吗

    这篇文章主要为大家详细介绍了C++的继承特性,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • uboot添加自定义命令的实现步骤

    uboot添加自定义命令的实现步骤

    uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是从flash中读出内核,放到内存中,启动内核,这篇文章主要介绍了uboot添加自定义命令的实现步骤,需要的朋友可以参考下
    2022-11-11

最新评论