當前位置:首頁 » 存儲配置 » 三維數組存儲

三維數組存儲

發布時間: 2025-05-10 23:14:35

『壹』 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

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

『貳』 求元素『4,2,3』的存儲首地址。

解:
數組A『1..8,負2..6,0..6』相當於一個C語言的三維數組B[8][9][7],
則元素A『4,2,3』相當於元素B[3][4][3]
三維數組的地址計算方法:
對於三維數組a[d1][d2][d3],可以想像成有d1頁,每頁有d2行和d3列,每一頁內以行為主序存儲.則第一個元素的地址即為a[0][0][0]的地址.設每個元素佔R個位元組,則元素a[i][j][k]的地址為:
Addr(a[i][j][k])=Addr(a[0][0][0])+(d2*d3*i+d3*j+k)*R.

到此本問題就可以解決了:
即:
Addr(A『4,2,3』)=Addr(B[3][4][3])=Addr(a[0][0][0])+(9*7*3+7*4+3)*4
=78+(9*7*3+7*4+3)*4=958
說明:本題中,d1=8,d2=9,d3=7,R=4,Addr(a[0][0][0])=78(後兩者問者給出)

『叄』 假設三維數組A[10][9][8]按行優先順序存儲,若每個元素佔3個存儲單元,且首地址為100,則元素A[9][8][7]的

(9×(9*8)+8*7+7)×3+100
9×(9*8)是因為有9個9×8的二維數組
8*7+7對單個的二維數組計算
對吧

『肆』 四維數組存儲地址計算公式

四維數組存儲地址計算公式:A[i][j]=A[0][0]+(i*N+j)*L。

A[8][5]前面有多少個元素。行下標i從1到8,列下標j從1到10,所有A[8][5]之前共有n7*10+4(74)個元素。每個元素的長度為3個位元組,故共有3*74=222個位元組。

三維數組A(ijk)按「行優先順序」存儲,其地址計算函數為:LOC(aijk)=LOC(a111)+[(i-1)*n*p+(j-1)*p+(k-1)]*d。

簡介

通過一個整型下標可以訪問數組的每一個值。數組維數是指在多維數組之中採用一系列有序的整數來標注,整數列表之中整數始終相同的個數。在資料庫中,數組維數與表中屬性數量有關,屬性越多,數組維數越大。計算機中的欄位屬性、資源特性和那些讀取與修改的許可權。例如:文件屬性、用戶的屬性。

『伍』 怎麼計算三維數組的存儲地址

假設數組各維的下界是不是1,二維數組A(mn)按「行優先順序」存儲在內存中,假設每個元素佔用d個存儲單元。元素a(ij)的存儲地址應是數組的基地址加上排在a(ij)前面的元素所佔用的單元數。因為a(ij)位於第i行、第j列,前面i-1行一共有(i-1)×n個元素,第i行上a(ij)前面又有j-1個元素,故它前面一共有(i-1) ×n+j-1個元素。
因此,a(ij)的地址計算函數為:LOC(aij)=LOC(a11)+[(i-1)*n+j-1]*d。
同樣,三維數組A(ijk)按「行優先順序」存儲,其地址計算函數為:LOC(aijk)=LOC(a111)+[(i-1)*n*p+(j-1)*p+(k-1)]*d。

上述討論均是假設數組各維的下界是1,更一般的二維數組是A[c1..d1,c2..d2],這里c1,c2不一定是1。a(ij)前一共有i-c1行,二維數組一共有d2-c2+1列,故這i-c1行共有(i-c1)*(d2-c2+1)個元素,第i行上a(ij)前一共有j-c2個元素。
因此,a(ij)的地址計算函數為:LOC(aij)=LOC(ac1c2)+[(i-c1)*(d2-c2+1)+j-c2)]*d。

例如,在C語言中,數組各維下標的下界是0,因此在C語言中,二維數組的地址計算公式為:LOC(aij)=LOC(a00)+(i*(d2+1)+j)*d。

『陸』 在matlab中如何導入數據為一個三維數組

假設您擁有以下結構的數據,由多個維度相等的矩陣組成。在 MATLAB 中,導入並處理這類數據的流程大致如下:

首先,您需要使用`zeros`函數創建一個三維數組,其大小與矩陣的數量及矩陣的維度相匹配。然後,通過`importdata`函數將數據導入 MATLAB 環境中。導入後,數據將以特定格式存儲。

接下來,編寫一個循環,將數據按照每固定維度的順序,逐個存入之前創建的三維數組中。具體代碼示例如下:

完成循環後,您的`decouple`數據便以三維數組的形式呈現,具有所需的結構。

通過上述方法,您便可以方便地調用和操作該三維數組,實現對數據的進一步分析與處理。

熱點內容
騰訊輕量伺服器怎麼使用 發布:2025-05-11 03:52:46 瀏覽:173
4位密碼組合有多少種至少有一個0 發布:2025-05-11 03:44:03 瀏覽:338
八卦手指演算法 發布:2025-05-11 03:23:32 瀏覽:281
編譯成exe是什麼意思 發布:2025-05-11 03:23:28 瀏覽:470
javaweb技術內幕 發布:2025-05-11 03:20:14 瀏覽:803
多台焊機變壓器怎麼配置 發布:2025-05-11 03:18:07 瀏覽:310
nmake編譯 發布:2025-05-11 03:04:32 瀏覽:622
房產證加密碼 發布:2025-05-11 02:49:17 瀏覽:341
伺服器少個陣列卡盤符怎麼找出來 發布:2025-05-11 02:34:07 瀏覽:636
鬥地主源碼開發 發布:2025-05-11 02:24:07 瀏覽:366