㈠ c語言三維數組問題
多個相同的二維數組可以用三維數組表示。或者說三維數組是以二維數組為元素的數組。
比如一個城市有10個學校,每個學校有10個班,每個班有40個學生,那麼表示這10個學校的學生的語文成績的時候,就可以用一個三維數據a[10][10][40]來存儲。
㈡ c語言、三維數組
你就想像成全是一維的,C原來設計也只有一維。你可以想像成有個特殊的數組裡面每個元素又是一個數組,而這個數組裡面的每個元素他又是一個數組。你要說用線性代數可以空間理解,但是3維以上你給我空間想像一下啊,我想不到。指針當然要佔內存。雖然它指向某個內存的地方,但是他同樣需要某個東西指向它啊。打個比方好比它就是個路標,指向某個方向。但是機器編譯需要知道指向路標的路標一樣。我是這樣理解的。
㈢ C語言三維數組的作用
一維數組只有一行元素,相當於一本書中的一行。比如存儲一個學生6門課的成績。
二維數組分為若干行若干列,相當於一本書中的一頁。比如存儲40個學生6門課的成績。
三維數組分為若干行若干列若干頁,相當於一本書。用於存儲有三個維度(三個方向)的一批數據。比如存儲10個班級,每班40個學生,6門課的成績。(當然也可以理解成400個學生,6門課的成績,並用二維數組存儲,但是不容易體現班級的概念。)
㈣ c語言三維數組數組問題
可以。
如果是int a[3][3][3];
a[0]就是第0個3*3的二維數組
㈤ C語言中的三維數組是怎麼回事
你就想像成全是一維的,C原來設計也只有一維。你可以想像成有個特殊的數組裡面每個元素又是一個數組,而這個數組裡面的每個元素他又是一個數組。你要說用線性代數可以空間理解,但是3維以上你給我空間想像一下啊,我想不到。指針當然要佔內存。雖然它指向某個內存的地方,但是他同樣需要某個東西指向它啊。打個比方好比它就是個路標,指向某個方向。但是機器編譯需要知道指向路標的路標一樣。我是這樣理解的。
㈥ c語言-指針-指向三維數組
int i,j,k;
char ***m = (char***)malloc(H* sizeof(char**)); //定義動態三維數組m
for(j=0; j<m; j++)
{
m[j] = (char**)malloc(6*sizeof(char*));
for(k=0; k<n; k++)
{
m[j][k] = (char*)malloc(32*sizeof(char));
}
}
char *n;
n=(char *)malloc(sizeof(char )*H);
for(i=0;i<=H;i++)
n[i]=m[i][6][32];
㈦ 三維數組怎麼理解c語言
先理解二維數組,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 大小的矩陣。
㈧ c語言中多維數組的某一行如何表示
二維:a[0][0]表示第0行第0列的元素。
a[0][1]表示第0行第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
這里注意的是,不要把指針跟數組弄混了,雖然內存可以用數組的形式訪問,但他們實際上是不一樣的,數組比指針多一次定址操作.