當前位置:首頁 » 服務存儲 » 三位數組存儲空間
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

三位數組存儲空間

發布時間: 2023-06-18 12:26:16

c語言三維數組問題

在c語言,數組存儲空間是連續的,所以三維數組其實可以看成特殊的一維數組,p[3][4][5]可以看成p[3*4*5]的一維數組,因此p[1][7][1]
=
p[1*4×5+7*5+1]
=
p[56]
56<3*4*5=60
,所以p[1][7][1]沒有超出范圍

② c 語言中,二維數組結構體和三維數組有什麼不同,他們的輸入儲存各在哪裡

C語言中,二維三維數組結構體基本是一樣的,一維數組,如a[3]在內存里這樣:
a[0]a[1]a[2]
二維a[2][3]就變成了 a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
三維a[2][2][3] a[0][0][0] a[0][0][1] a[0][0][2] a[0][1][0] a[0][1][1] a[0][1][2]....
不論如何都是線性存儲的, 因為內存可以抽象成線性的
其實C語言中的三維數組一般都是定義成一個指向二維數組的一維數組, 二維數組也一般定義成指向數組的數組

給你的簡單的例子:
(循環中)

// 增加內存區域 ---- 二維數組(只能增加, 沒做減少處理)
MayBe =(LONG **) realloc(MayBe, sizeof(LONG *) * (MBCount+1));
MayBe[MBCount] = (LONG *) malloc(sizeof(LONG)*10);

MayBe[MBCount][0] = x[0];
MayBe[MBCount][1] = x[1];
MayBe[MBCount][2] = x[2];
MayBe[MBCount][3] = x[3];
MayBe[MBCount][4] = x[4];
MayBe[MBCount][5] = x[5];
MayBe[MBCount][6] = x[6];
MayBe[MBCount][7] = x[7];
MayBe[MBCount][8] = x[8];
MayBe[MBCount][9] = x[9];
MBCount ++;

刪除:
for(i=0; i<MBCount; ++i)
if(MayBe[i]) free(MayBe[i]);
free(MayBe);

直接從我的一個程序中摳出來的:P

這里注意的是,不要把指針跟數組弄混了,雖然內存可以用數組的形式訪問,但他們實際上是不一樣的,數組比指針多一次定址操作.