用c語言動態三維陣列用C語言,動態三維陣列

2021-03-04 08:16:47 字數 3157 閱讀 6164

1樓:匿名使用者

1、先說二維,可以這麼理解:

int n[3]有3個int

那麼,int m[5][3]有5個int[3]賦值時:

n[1]=3把3給1號

m[4]=m[4]是個int[3]型別,這麼賦值,也就是這麼賦值:

m[4]的[0]是5:m[4][0]=5

m[4][1]=9

m[4][2]=4

懂了嗎?三維甚至更多維大同小異,比如

int k[4][5][3]有4個int[5][3]2、例程:

int*** creategrid(int m,int n,int t)

{int*** tt = null;

tt = (int***)malloc(sizeof(int)*m);

for(int i=0;i

2樓:

#include

int *** creategrid(unsigned m, unsigned n, unsigned t);/*建立整形三維陣列*/

void freegrid(int *** c1,unsigned m,unsigned n);/*釋放整形三維陣列*/

static void free1(int *** c1,unsigned n);

static void free2(int *** c1,unsigned m,unsigned n,unsigned k);

int *** creategrid(unsigned m, unsigned n, unsigned t)/*建立整形三維陣列*/

if(i!=m)/*第二維分配失敗,釋放以前分配到的記憶體*/

for(i=0;i!=m;++i)/*分配第三維*/

if(j!=n)

break;

}if(j!=n)/*第三維分配失敗,釋放以前分配到的記憶體*/

return c1;

}static void free1(int *** c1,unsigned m)/*釋放前m個指標*/

static void free2(int *** c1,unsigned m,unsigned n,unsigned k)

void freegrid(int *** c1,unsigned m,unsigned n)/*釋放記憶體*/

3樓:匿名使用者

int*** creategrid(int m,int n,int t)

}return tt;

}void freegrid(int*** tt,int m,int n,int t)

free(tt[i]);

}free(tt);

tt = null;}}

c語言、三維陣列

4樓:bc警長

先說二維,可以這麼理解:

int n[3]有3個int

那麼,int m[5][3]有5個int[3]賦值時:

n[1]=3把3給1號

m[4]=m[4]是個int[3]型別,這麼賦值,也就是這麼賦值:

m[4]的[0]是5:m[4][0]=5

m[4][1]=9

m[4][2]=4

懂了嗎?三維甚至更多維大同小異,比如

int k[4][5][3]有4個int[5][3]這個概念應該不難理解的,就是各種型別,不停的加下標,加下標,加下標,下標,標……

曾寫過一個模擬7段碼(看看紅綠燈上的倒計時是怎麼顯示的),共有2行顯示,每行10個數字,每個數字7段,整個系統狀態就是用一個bool[2][10][7]確定的

5樓:夢中夢

在c語言中,多維陣列的存放規律都是第一維下標變化的最慢,越往後維數越高,下標變化越快,例如:對於三位陣列a[2][2][2],其賦值順序就是:

a[0][0][0]

a[0][0][1]

a[0][1][0]

a[0][1][1]

a[1][0][0]

a[1][0][1]

a[1][1][0]

a[1][1][1]

總結的說,就是「維數最高優先儲存」

至於什麼情況用三維陣列,這要看你程式設計思想了,當你想編的程式抽象成三維的東西,就用三維陣列來表示,就如矩陣似的,我們把矩陣看成是一個圖,二維的,所以用了二維陣列

希望可以幫助你

6樓:匿名使用者

三維陣列和二維陣列一維陣列一樣啊,使用的時候用3個下標,下標的起點也是0

初始化也就是二維陣列的推廣,因為是行序優先存放,所以沒有完全初始化的後面的元素自動賦初值0

如果有三個控制量就用三維陣列啊,比方是三維空間xyz

7樓:燕曉

這個得需要計算機專業知識才行。

c語言三維陣列怎麼用的

8樓:

比如三維陣列a[5][4][2]; 可以這樣引用

a[0][0][0], a[0][0][1], a[4][3][1],等。

9樓:鍾陳眷屬

像乘法一樣,[[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]], [[26, 27, 28, 29, 30], [31, 32, 33, 34, 35], [36, 37, 38, 39, 40], [41, 42, 43, 44, 45], [46, 47, 48, 49, 50]], [[51, 52, 53, 54, 55], [56, 57, 58, 59, 60], [61, 62, 63, 64, 65], [66, 67, 68, 69, 70], [71, 72, 73, 74, 75]], [[76, 77, 78, 79, 80], [81, 82, 83, 84, 85], [86, 87, 88, 89, 90], [91, 92, 93, 94, 95], [96, 97, 98, 99, 100]], [[101, 102, 103, 104, 105], [106, 107, 108, 109, 110], [111, 112, 113, 114, 115], [116, 117, 118, 119, 120], [121, 122, 123, 124, 125]]]能理解吧

在c語言陣列中怎麼用,C語言陣列怎麼輸出全部?

真是沒轍.實在就多分配點空間.連結串列是動態的,如果用c 把動態分配放到類裡面,就給你一個介面,你是不是也認為那是動態的呢?c與vb不能比.vb有幾個是弄記憶體的?基本上是對的,scanf 裡的引數就是變數的地址陣列名你可以理解為這個陣列的起始地址 第一個元素的地址 比如你這裡的a,它就相當於是 a...

關於c語言二維陣列輸出問題,C語言程式設計二維陣列輸出一個23的矩陣

二維bai陣列是由一維陣列構成的,迴圈第du一維輸出zhi就可以了 include stdio.h int main int argc,char argv int i for i 0 i 7 puts s i return 0 執行結果 版空的那一行就是那個權空字串的輸出結果。c語言程式設計 二維陣...

用c語言如何定義較大的二維陣列例如1000行

void main 這樣定義沒有問題 array size too large 陣列太大 分析 定義的陣列太大,超過了可用記憶體空間。可能是你的可用記憶體空間太小 用int定義所佔空間較大,如用unsigned char定義空間會節約很多,不過還是不能滿足1000行1000列的要求,微控制器內的資料...