C語言下標越界問題,c語言問題,二維陣列的下標越界怎麼看?

時間 2021-07-21 03:29:33

1樓:匿名使用者

這個跟系統有關係。

如果陣列越界是否破壞了原來的函式呼叫棧,或者訪問到了不可訪問的地址,或者寫了只有讀許可權的地址,那肯定會出錯了。

但是如果你的陣列的越界只是訪問到了原本就沒有被分配的記憶體,那麼就不會出錯,但是不能保證這麼下去一直不會錯。

2樓:淦海瑤

越界有危險,但是沒有辦法判斷,

3樓:於夜漆雕騫騫

第二個迴圈條件寫錯了吧

迴圈裡i只要小於等於6就會死迴圈了

比如第一次i為零時就會一直讓j自增跳不出迴圈自然了j大過陣列下標最大值時就越界了

c語言問題,二維陣列的下標越界怎麼看?

4樓:邰懷蕾範掣

假設bai這個陣列是連du續記憶體的話,第二個zhi下標越界第一個不越界dao,專那這個地址還是屬有可能落在這個二維陣列的記憶體範圍內的,但是你第一維最後元素的第二維下標越界試試?

那就跑出這個陣列的記憶體範圍了,誰這麼明確告訴你可以越界了?

inta[5][5];

a[5][6]=0;

這麼寫或許編譯不報錯,但是你修改了莫名其妙地址上的資料,要麼崩潰要麼出錯...這樣是不可取的

5樓:匿名使用者

定義的時候,數字表示的是數量。

而下標是從0開始的,所以最大下標是總數量減1。

比如int a[10]表示10個數的陣列,它們的下標就是0到9總共10個。

c語言 二維陣列下標越界的一道題目

6樓:匿名使用者

因為數bai組的第二維維度是3,而a[-1][5]的第du二維超zhi過了,最大能取到的2.所以其dao實相當於a[0][2] 所以是3

舉個容內易理解的例子容:

a[3][3]

*a + 1其實是 a[0][1]

*a + 4其實是 a[1][1]

C語言陣列下標越界問題,C語言二維陣列下標越界問題

光輝歲月 首先 陣列下標是從0開始的 所以a 的下表是從0 9的,即a 10 a 9 是錯誤的。a指的是a 9 後面的那個儲存單元的的數值。其次 void fun int a,int n,int m 這個j是多餘的。 void fun int a,int n,int m 第一個括號是全形的括號!還有...

C語言問題,C語言問題C語言問題

選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...

C語言問題,C語言問題

符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...