欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言陷阱與缺陷之?dāng)?shù)組越界訪問詳解

 更新時間:2022年02月24日 11:10:35   作者:beating-fish  
這篇文章主要為大家詳細介紹了C語言的數(shù)組越界訪問,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1.問題引入

一道經(jīng)典的筆試題來了,請做好準(zhǔn)備?。?!

試問以下代碼在Visual studio 2019環(huán)境下執(zhí)行結(jié)果?原因?

#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;
}

運行結(jié)果:

想不到吧為什么會造成死循環(huán)里???

疑惑鴨???

這樣一個看似淺顯的代碼卻存在一個大大的陷阱等著你,讓我們一起來分析哈!

2、問題分析

(1)理論分析

很顯然出現(xiàn)了數(shù)組越界訪問但是為什么會造成死循環(huán)里???

首先我們知道局部變量在存在棧區(qū)中,存儲方式為先使用高地址再使用低地址,然而數(shù)組存儲方式開辟一塊地址然后地址由低到高依次存儲。

這樣在越界訪問時可能會導(dǎo)致問題?。?!

數(shù)組越界訪問到Arr[12]會改變i的值導(dǎo)致了死循環(huán)哈?。?!

(2)調(diào)試驗證

由此可見i的地址和arr[12]的地址是一樣的,這樣在數(shù)組越界訪問中在修改arr[12]的值時把i的值改掉了,之后每次循環(huán)到此處都產(chǎn)生同樣的結(jié)果造成了死循環(huán)哈?。?!

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • OpenCV實現(xiàn)雙邊濾波算法

    OpenCV實現(xiàn)雙邊濾波算法

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)雙邊濾波算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C/C++實現(xiàn)磁盤相關(guān)操作的示例代碼

    C/C++實現(xiàn)磁盤相關(guān)操作的示例代碼

    這篇文章主要為大家詳細介紹了C/C++如何實現(xiàn)磁盤相關(guān)操作,例如遍歷磁盤容量、實現(xiàn)磁盤格式化、移除指定磁盤等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Qt實現(xiàn)矩形大小任意縮放的示例代碼

    Qt實現(xiàn)矩形大小任意縮放的示例代碼

    這篇文章主要介紹了Qt如何實現(xiàn)在窗口上繪制任意大小的矩形,并且通過邊角的拖曳按鈕可改變矩形大小,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • MFC創(chuàng)建模態(tài)對話框和非模態(tài)對話框的方法

    MFC創(chuàng)建模態(tài)對話框和非模態(tài)對話框的方法

    這篇文章主要介紹了MFC創(chuàng)建模態(tài)對話框和非模態(tài)對話框的方法,需要的朋友可以參考下
    2014-07-07
  • QT實現(xiàn)簡單音樂播放器

    QT實現(xiàn)簡單音樂播放器

    這篇文章主要為大家詳細介紹了QT實現(xiàn)簡單的音樂播放器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++數(shù)據(jù)結(jié)構(gòu)之單鏈表的實現(xiàn)

    C++數(shù)據(jù)結(jié)構(gòu)之單鏈表的實現(xiàn)

    線性表的鏈?zhǔn)酱鎯τ址Q為單鏈表,它是指通過一組任意的存儲單元來存儲線性表中的數(shù)據(jù)元素。本文將用C++實現(xiàn)單鏈表,需要的可以參考一下
    2022-05-05
  • C++中的覆蓋和隱藏詳解

    C++中的覆蓋和隱藏詳解

    這篇文章主要介紹了C++中重載、重寫(覆蓋)和隱藏的區(qū)別,是C++面向?qū)ο蟪绦蛟O(shè)計非常重要的概念,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-08-08
  • C++如何實現(xiàn)廣義表詳解

    C++如何實現(xiàn)廣義表詳解

    廣義表是非線性結(jié)構(gòu),其定義是遞歸的。那么下面跟著小編一起看看如何用C++實現(xiàn)廣義表,有需要的可以參考借鑒。
    2016-08-08
  • C++的繼承特性你了解嗎

    C++的繼承特性你了解嗎

    這篇文章主要為大家詳細介紹了C++的繼承特性,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • uboot添加自定義命令的實現(xiàn)步驟

    uboot添加自定義命令的實現(xiàn)步驟

    uboot 屬于bootloader的一種,是用來引導(dǎo)啟動內(nèi)核的,它的最終目的就是從flash中讀出內(nèi)核,放到內(nèi)存中,啟動內(nèi)核,這篇文章主要介紹了uboot添加自定義命令的實現(xiàn)步驟,需要的朋友可以參考下
    2022-11-11

最新評論