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列的要求,微控制器內的資料...