1樓:
二給陣列在內在中是連續儲存的,若有int a[20][20],則儲存如下示意:
第1行:a[0][0],a[0][1],a[0][2],a[0][3],a[0][4],a[0][5],a[0][6],a[0][7],a[0][8],a[0][9],a[0][10],a[0][11],a[0][12],a[0][13],a[0][14],a[0][15],a[0][16],a[0][17],a[0][18],a[0][19],第2行:
a[1][0],a[1][1],.a[1][19],.
第11行:a[10][0],a[10][1],a[10][2],a[10][3],a[10][4],a[10][5],.a[10][19],.
第19行:a[18][0],a[18][1],a[18][2],a[18][3],a[18][4],a[18][5],a[18][6],a[18][7],a[18][8],a[18][9],.a[18][19]
計算一下從a[10][5]~a[18][9]經過了幾個元素,用元素數乘以4,結果+1000,就是a[18][9]所在地址。所以1000+((18-10)x20-5+9)x4=1656.。
其中:(18-10)經過的行數,5開始列數,9是結束列數。
2樓:網友
首先,要知道這個二維陣列每組的維度。行維:11,列維:16
二維陣列運算問題
如何解二維陣列地址的問題?
二維陣列儲存地址計算
3樓:折柳成萌
i-p是在a[i][j]之前的行數,每一行有n列,並且是從第零行開始,而a[i][j]在第i行第j列,故再加上j-p,你畫個表就知道了。
二維陣列儲存地址計算
4樓:是你吻開筆墨
c1,c2為二維陣列a1,1的下標分別為1,所以c1=1 c2=1
d1為二維陣列的行數。
這樣算的原因說那啥點是一個公式,考試會用就行了。
二維陣列的陣列名和地址問題
5樓:網友
首先,必須明確的是,a[4][2]是一個二維陣列的時候,,你輸出a的時候是一個地址;
其次,你對a進行取地址&,那麼其結果還是一個地址,這個地址是a存放的地址,不是a的輸出地址。
#include
void main()
;int *p1;
int **p2;
p1=a[0];
p2=&p1;
printf("%10d%10d",p1,*p1);
printf("%10d%10d%10d",p2,p2+1,*p2);}
6樓:金色潛鳥
a 是 這個二維陣列 的首地址。
&a 也是 這個二維陣列 的首地址。
單獨 輸出 a, 和 &a 是 一樣的 地址值。
a+1, 是 a陣列第2行的首地址,即 &a[1][0]。 等於 二維陣列 的首地址 + 一行佔用的記憶體位元組數。
&a + 1, 不是簡單的 首地址 加 1,而是 首地址 + 整個陣列佔用的記憶體位元組數。
也就是說 此1 非那1:
a+1, 是 加一行大小。
&a + 1, 是 加整個陣列大小。
用式子計算時要注意 &a[0][0] 或 &a 是地址,不能直接 + sizeof(a), 因為 sizeof(a) 是 int 型。輸出格式 %10d, 則 相加時 要用 (int)(&a[0][0]) sizeof(a) ,若用: (a[0][0]) sizeof(a) 結果不對 --c 語言 「奇葩」 之一。
php中如何合併幾個二維陣列成為二維陣列
宇宙大師之一 php 中的 array merge recursive 函式可以實現 將一個或多個陣列的元素的合併起來,一個陣列中的值附加在前一個陣列的後面。並返回作為結果的陣列。當有重複的鍵名時,值不會被覆蓋,而是將多個相同鍵名的值遞迴組成一個陣列。array merge recursive ar...
c語言二維陣列問題
寫完以後我發現有點長,樓主給點耐心看,不懂我們再交流 a是整個二維陣列的首地址,short長度為2,sizeof a 2 5 5 50 a 1指向二維陣列的第二個元素,它僅僅是一個指標,如果在a 1前面加一個 號,就是第二個元素的值,即a 0 1 所以,a 1是一個指標,它指向二維陣列中的某個數,指...
C二維陣列如何初始化為,C 二維陣列如何初始化為
du瓶邪 include using namespace std int main cout c 也可以寫 int a 10 8 簡單的就是 memset a,0,sizeof a 例如 int a 3 4 a 0 0 0 這樣寫第一個元素初始化為0,其餘也會初始化為0還有一種就是 memset 要...