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的值改掉了,之后每次循环到此处都产生同样的结果造成了死循环哈!!!

总结

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

相关文章

  • C语言中字符的输入输出以及计算字符个数的方法详解

    C语言中字符的输入输出以及计算字符个数的方法详解

    这篇文章主要介绍了C语言中字符的输入输出以及计算字符个数的方法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • 解决codeblocks断点不停无效的问题

    解决codeblocks断点不停无效的问题

    今天小编就为大家分享一篇解决codeblocks断点不停无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • C++的std::transform()的实现

    C++的std::transform()的实现

    在 C++ 标准库中,std::transform() 是一个非常有用的算法函数,它能够将给定范围中的每个元素进行变换,并将变换后的结果存储到另一个范围中,本文就详细的介绍一下具体用法,感兴趣的可以了解一下
    2023-08-08
  • C语言中使用快速排序算法对元素排序的实例详解

    C语言中使用快速排序算法对元素排序的实例详解

    这篇文章主要介绍了C语言中使用快速排序算法对元素排序的实例详解,文中细分了几个情况来举例,在注释里有说明,需要的朋友可以参考下
    2016-04-04
  • VC++编程获取窗口句柄的方法小结

    VC++编程获取窗口句柄的方法小结

    这篇文章主要介绍了VC++编程获取窗口句柄的方法,简单总结分析了VC++获取窗口句柄的常见函数与使用技巧,需要的朋友可以参考下
    2017-07-07
  • C语言数据结构之图书借阅系统

    C语言数据结构之图书借阅系统

    这篇文章主要为大家详细介绍了C语言数据结构之图书借阅系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Qt打印信息输出到日志文件中的两种方法

    Qt打印信息输出到日志文件中的两种方法

    最近在研究把 Qt 的打印信息 输出的到日志文件中,文件存储尝试了2种方法,并通过代码示例和图文给大家介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-04-04
  • C++程序检测内存泄漏的方法分享

    C++程序检测内存泄漏的方法分享

    这篇文章主要介绍了C++程序检测内存泄漏的方法分享,本文讲解了、对象计数、重载new和delete、Hook Windows系统API、使用DiagLeak检测等内容,需要的朋友可以参考下
    2015-03-03
  • C语言中函数的声明、定义及使用的入门教程

    C语言中函数的声明、定义及使用的入门教程

    这篇文章主要介绍了C语言中函数的声明、定义及使用的入门教程,重点讲述了main函数的相关知识,需要的朋友可以参考下
    2015-12-12
  • Qt中正则表达式的常见用法(QRegularExpression类)

    Qt中正则表达式的常见用法(QRegularExpression类)

    正则表达式即一个文本匹配字符串的一种模式,Qt中使用QRegExp类进行模式匹配,下面这篇文章主要给大家介绍了关于Qt中正则表达式的常见用法,文中介绍的是QRegularExpression类的相关资料,需要的朋友可以参考下
    2024-05-05

最新评论