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

2021-05-22 14:59:46 字數 1775 閱讀 5175

1樓:匿名使用者

因為數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語言問題,二維陣列的下標越界怎麼看?

2樓:邰懷蕾範掣

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

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

inta[5][5];

a[5][6]=0;

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

3樓:匿名使用者

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

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

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

為什麼在c語言中二維陣列第二維下標可以越界?

4樓:匿名使用者

因為陣列是連續儲存的,所以a[0][3]就是第四個儲存的資料,你可以試試a[0][4]..

5樓:匿名使用者

越界復是肯定的,但是越界不代表程

制序會出

bai錯,你這個地方越界du後訪問的正好是下一個元素4,是zhi一個dao有效值,所以不會出錯。可以試試訪問a[3][3],這個時候不一定會訪問到什麼東西,這時就很容易出現記憶體破壞,會提示記憶體不可訪問之類的吧

6樓:匿名使用者

不是能越界,c中陣列時從0開始算起的。你是a[3][3],想要顯示對應元素時,就應做相應變換,例版如顯示權

第2行第3列元素(即6),就要寫printf("%d ",a[1][2]);,你寫a[0][3]按照3維陣列來說,沒有這個元素,這時c語言內的編譯器就自動把這個三維陣列預設成一個一維陣列,他顯示的是這個以為陣列的第4個數,即4

7樓:幻夢の初

相當於一維陣列的第四個元素

哥們,往大了試,a[0][9]你試試

8樓:大心星

假設這個陣列是連續記憶體的話,第二個下標越界第一個不越界,那這個內地址還是有可能落在這個二維數容組的記憶體範圍內的,但是你第一維最後元素的第二維下標越界試試? 那就跑出這個陣列的記憶體範圍了,誰這麼明確告訴你可以越界了?

int a[5][5];

a[5][6]=0;

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

關於c語言陣列引用下標越界問題,希望個大神幫忙解答!

關於二維陣列下標越界的問題

9樓:gta小雞

二維陣列a只有兩行,a[2]已經越界。

10樓:匿名使用者

請先給抄出明確答覆:

陣列下標越bai界

解釋原因:du

首先陣列arrs 裡面包含兩個陣列,zhi長度是dao2,那麼最大的下標就是1

你的輸出語句  arrs[2][3]  ,如果你想要輸出第二個陣列的地三個數應該是arrs[1][2]

c語言二維陣列下標表示方法,C語言二維陣列下標表示方法

下標就是在裡的,他是重0開頭的。具體表示如下 int a 5 5代表a最後個陣列裡的元素個數 是初學者吧!要努力喲!int n float a n n 都是從0開始到n 1 c語言二維陣列下標的值怎麼算 陣列的下標是從0開始,由於陣列是連續儲存的,你可以想象用一個4x4的 來表達這個陣列,然後把fo...

c語言中二維陣列行指標是什麼,C語言中二維陣列行指標是什麼

就是指向每一行的指標,比如說二維陣列a 2 3 a 0 代表的是二維陣列第零行的首地址相當於 a 0 0 a 1 代表的是二維陣列第一行的首地址相當於 a 1 0 a 0 1代表的是二維陣列第零行,第一列的地址相當於 a 0 1 行指標其實就是二級指標,也就是說它指向一個一維陣列,int a 2 3...

c語言判斷有二維陣列a4a

a 2 意思是第三行元素的首地址即a 2 0 的地址,a 2 3 意思是第三行元素首地址加3再取值,第三行元素首地址加3就是第三行第四個元素的地址,在取值就是a 2 3 的值了。c語言二維陣列 a 3 4代表什麼 char p是一維的,str是2維的,p str,二者不匹配。str 0 是一維的,與...