如何用指標構建二維陣列啊

2025-03-25 22:35:16 字數 1751 閱讀 5947

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語言中,廣義的說,任何名...