c語言三維陣列三維陣列怎麼理解c語言

2021-03-04 08:16:48 字數 5282 閱讀 7463

1樓: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]確定的

2樓:夢中夢

在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]

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

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

希望可以幫助你

3樓:匿名使用者

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

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

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

4樓:燕曉

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

三維陣列怎麼理解c語言

5樓:金色潛鳥

先理解二維陣列,int a[3][4]; 理解成3行4列。例如:

1 2 3 4 // 第1行

5 6 7 8 // 第2行

9 10 11 12 // 第3行。 你可以理解成 行索引號 是直角座標y值,列索引號 是直角座標x值.

現在變3維 int a[2][3][4]; 理解成深度(或高度)有2層的 3行4列 的陣列。

原來的 1 到 12 數值在 第一層,現在 有了第二層,第二層 數值是

13 14 15 16

17 18 19 20

21 22 23 34

所以 3 維陣列 int a[z][y][x], 就有 z 層 y*x 大小的矩陣。

6樓:

元素是二維陣列的一維陣列

c語言中三維陣列的賦值問題

7樓:匿名使用者

int limit[4][5][2]=, , , , ,, , , , ,

, , , , ,

, , , , };

你這樣定義是:int limit[20][2]。int limit[4][5][2]應該是

int limit[4][5][2]=, , , , },, , , , },

, , , , },

, , , , } };

c語言,三維陣列 140

8樓:孟羽然

(4-1+1)*(6+2+1)*(6-0+1) + (2+2+1)*(6-0+1) + (3-0+1)

=4*9*7 + 5*7 + 4

=252 + 35 + 4

=291

78 + 291*4

=78 + 1164

=1242

c語言三維陣列(本人新手)

9樓:匿名使用者

…………

…………………………………………………………

樓主,你真的明白什麼叫做三維陣列嗎?

你之前不是學c的吧?看這個樣子應該是學的指令碼語言?php還是python?或者說是ruby?

總之有一點需要注意

int a

這個裡面,a 的型別是 int,a[0]的型別是int

int a

這個裡面,a 的型別是 int,a[0]的型別是int,a[0][0]的型別是int

int a

這個裡面,a 的型別是 int,a[0]的型別是int,a[0][0]的型別是int,a[0][0][0]的型別才是int

你初始化的時候是這麼寫的:

int a = ,},,

,55};……你不感覺奇怪嗎?

a的第一個元素確實是int型,第二第三個怎麼就成了int型了?第四個乾脆直接成了int型……

並且最主要的最主要……c語言的陣列需要一個長度!並且必須是常量的長度!否則你只能使用指標!

10樓:匿名使用者

要陣列指定大小

int a[x][y][z],x可以省略,y和z不能省略

11樓:匿名使用者

輸出格式沒有,就是printf("%d",......),後面的輸出表示式也不對,三維陣列表示方法不正確,你想輸出啥

c語言中的三維陣列是怎麼回事?

12樓:匿名使用者

你就想象成全是一維的,c原來設計也只有一維。你可以想象成有個特殊的陣列裡面每個元素又是一個陣列,而這個陣列裡面的每個元素他又是一個陣列。你要說用線性代數可以空間理解,但是3維以上你給我空間想象一下啊,我想不到。

指標當然要佔記憶體。雖然它指向某個記憶體的地方,但是他同樣需要某個東西指向它啊。打個比方好比它就是個路標,指向某個方向。

但是機器編譯需要知道指向路標的路標一樣。我是這樣理解的。

13樓:匿名使用者

不管是幾維的,都可以看成是一維的。而且實際的實現也是一維的。

所以形如a的三維陣列,你完全可以將其轉換成一維的來使用.

如果不這樣的話

你就需要一點線性代數的知識了.行列式,矩陣......

再有什麼不懂的,可以問我.

14樓:匿名使用者

你想問的什麼啊?具體一點!

用c語言,動態三維陣列

15樓:匿名使用者

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

16樓:

#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)/*釋放記憶體*/

17樓:匿名使用者

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語言三維陣列問題

18樓:匿名使用者

多個相同的二維陣列可以用三維陣列表示。或者說三維陣列是以二維陣列為元素的陣列。

比如一個城市有10個學校,每個學校有10個班,每個班有40個學生,那麼表示這10個學校的學生的語文成績的時候,就可以用一個三維資料a[10][10][40]來儲存。

19樓:匿名使用者

一位陣列 你可以看成是 單個元素組成的陣列那 二維陣列 你可以看成是 一維陣列 組成的陣列三位陣列 自然就是 二維陣列組成的陣列完畢

20樓:西平司馬

三維是一個立方體,你把a [x] [y] [z]中的x,y,z理解成三維空間座標,這樣總能理解了吧

21樓:匿名使用者

測試通過,你

去試試吧!

#include

#include

int data[10][5][3] = ;

void display(int num)for (i = 0; i<5; i++)printf(" ");

}printf("\n");}}

int main(int argc, char* argv)

C語言中 二維陣列與三維陣列在使用過程中主要起什麼作用?它表

實際上是資料的一種組織方式,你可以想象成 二維陣列 行x列的長方形 三位陣列 長x寬x高 的長方體 在c語言中,陣列的意義,就是讓陣列的名字可以當作指標來使用,這樣就能很方便的定位資料。比如你有一個陣列arry 300 300 300 那麼他能儲存300 300 300 27000000個資料,如果...

c語言一維陣列和二維陣列怎麼去理解詳細點啊

i是迴圈變數,和陣列a沒什麼關係。a i 是指a陣列中的下標為i的值的那個元素的值 c語言一維陣列和二維陣列怎麼去理解?詳細點啊 i是迴圈變數,和陣列a沒什麼關係。a i 是指a陣列中的下標為i的值的那個元素的值 c語言程式 二維陣列 一維陣列 b i b j i 先取得b j i 的值,比如說是2...

matlab三維擬合,matlab 三維擬合

x 12.82 22.94 17.47 8.2 8.69 5.93 4.46 y 45.36 15.38 42.9 24.24 19.22 19.07 8.83 z 0.225 0.23 0.155 0.145 0.06 0.045 0 f a,x x 1,a 1 a 2 x 2,a 3 a 4 a...