1. 程式人生 > >陣列越界

陣列越界

1.區域性變數的定義
答:區域性變數是定義在函式體中的變數,記憶體區域在棧裡,資料先進後出,地址下面大上面小。
2.輸入一段程式碼:
#include<stdio.h>
int main()
{
int i;
int arr[10];
for(i=0;i<=10;i++)
{
arr[i]=0;
printf("%d",i);
}
return 0;
}
它們在棧中的儲存位置如圖所示(棧在給陣列分配空間時,直接給4*10=40個位元組,然後陣列自己排序)
3.分析程式崩潰原因:
當i=10時,10<=10
所以a[10]=0,但並無a[10],而i在9下面
所以i=0,又因為i=0<=10,所以i++,所以一直死迴圈,執行結果是死迴圈或者崩潰。
4.如何解決:
可以加入兩個值作為“炸彈”來隔開,若值給了這個“炸彈”,則終止,程式報錯。
但如果想無限迴圈也可以if(i=10)
{
i=12;
}
則跳過了炸彈。在這裡插入圖片描述