日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言陷阱與缺陷之數組越界訪問詳解_C 語言

作者:beating-fish ? 更新時間: 2022-04-27 編程語言

1.問題引入

一道經典的筆試題來了,請做好準備!!!

試問以下代碼在Visual studio 2019環境下執行結果?原因?

#include 
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的值改掉了,之后每次循環到此處都產生同樣的結果造成了死循環哈!!!

總結

原文鏈接:https://blog.csdn.net/weixin_52822783/article/details/123084028

欄目分類
最近更新