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 是一維的,與...