1樓:一問閃是攻日
區分好是二級指標還是一級指標。
二維陣列的陣列名相當於二圓豎告級指標。
要動態分配二維陣列,我覺得可以這樣。
#define m 10
#define n 6
statist **statists;
statists=new statist*[m];
for(int i=0;istatists[i]=new statist[n];
就是該如何動態分配多維陣列(有沒有實際意義另當別橘明論)討論討論。
2樓:邸慕石正浩
二維陣列可以看成是指標的指標,b[b;
比如b[2][5];
它是乙個2行5列的二維陣列,也可以看成是二級指標,碧亂一級存放的扮慧埋是行指標廳螞,然後每個行指標裡面其實又是指向了5個列元素。
(b+i)+j),*b+i)是先取行指標,然後+j偏移到所要的列,然後*取值就得到i行j列的資料了。
3樓:弘珹貫迎彤
區分好是。二級指標。
還是一級指標。
二維陣列。的陣列名相當於二級指標。
要動態分配二維陣列,我覺得可以這睜弊伏樣。
#definem
#definen
statist
statists;
statists=new
statist*[m];
for(int
i=0;i《卜喊m;i++)
statists[i]=new
statist[n];
就是該如何動態分配。
多維陣列。有沒有實際意義另當別論)討論討論。
c語言怎麼用指標代替二維陣列
4樓:惠企百科
1.設p是指向二維陣列a[m][n]的指標變數,則有:
int* p=a[0];/此時p是指向一維陣列的指標。p++後,p指向 a[0][1]。
2.如果定義int (*p1)[n];p1=a;p1++後,p1指向a[1][0];
則p+j將指向a[0]陣列中的元素a[0][j]。
由於a[0]、a[1]┅a[m-1]等各個行陣列依次連續儲存,則對於a陣列中的任一元素a[i][j],指標的一般形式如下:
p+i*n+j, 相應的如果用p1來表示,則為*(p1+i)+j。
元素a[i][j]相應的指標表示為:
p+i*n+j) ,相應的如果用p1來表示,則為*(*p1+i)+j)。
同樣,a[i][j]也可使用指標下標法表示,如p[i*n+j]。
若有:int *p=a[0];
則陣列a的元素a[1][2]對應的指標為:p+1*4+2
元素a[1][2]也就可以表示為:*(p+1*4+2)
用下標表示法,a[1][2]表示為:p[1*4+2]
一維陣列指標與二維陣列指標
5樓:網友
這個只是定義上的區別,陣列名是自定義的,比如a b中a就是一維陣列指標,b就是二維陣列指標,陣列名沒有特殊的要求。
這個是陣列的儲存結構問題了,一維陣列可以看做一行,因此a就是第乙個元素的位址,*a就是第乙個元素的值,而二維陣列可以看做乙個矩陣,包括行和列,其中的b就類似於原先一維陣列中每列的位址,因此第乙個元素就相當於乙個位址了,而b這時是這個位址的位址,所以*b就相當於第乙個元素的位址。
a 0 1 2 3 從這個簡圖大致可以看明白意思b 0 1 2 3
關於二維陣列指標的問題
其實這是c在實現多維陣列時的魔術而已,實際上a就是一個12個int的資料區。你在寫a 1 2 時編譯器實際上知道這個陣列一行是4個元素,所以計算它的地址為a 1 4 2,即a 1 2 就是 a 1 4 2 另一方面,編譯器允許使用形如a 1 這樣的表述,由於它知道a是一個定義為a 3 4 的陣列,所...
怎麼理解指向二維陣列的陣列指標是二級指標
一維陣列的名其實就是指標,如int a 4 a就相當於一個指標 int p a 沒錯 但是二維陣列 int aa 2 3 這個時候是不能用int pp aa 是錯誤的。實際上二維陣列的第一維是int ab 3 是個指標陣列,不是陣列指標。這個時候int ab 3 是與 int 不同的。所以接受二維陣...
二維陣列名是不是「指標」,二維陣列名是不是一個「指標」?
理解一復 陣列名就是地址制常量,地址常量就是不能更改的地址,一旦定義了一個陣列就定了 指標是變數,這是和陣列本質的區別,他可以令他隨意等於任何一個有效的地址 理解二 個人認為陣列名不佔空間,就是個標誌,名字,和人名一樣,人名不佔空間,a 5 a作為左值,實際就是一個地址,在c語言中,廣義的說,任何名...