㈠ 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
这里注意的是,不要把指针跟数组弄混了,虽然内存可以用数组的形式访问,但他们实际上是不一样的,数组比指针多一次寻址操作.