C语言基础

    返回首页    发表留言
本文作者:李德强
          第三节 多维数组
 
 

        今天我们来学习数组的另一种用高级用法,多维数组。多维数组的定义与使用与数学定义一致,它可以表示多维的数值。

        一、二维数组

        例如我们先来定义一个二维数组

int array[3][4] =
{
	{ 0, 0, 0, 0 },
	{ 0, 0, 0, 0 },
	{ 0, 0, 0, 0 } 
};

        我们可以像上面例子一样在数组定义时为其指定初始值,也可以在数组定义之后再为其赋值。

        上面例子中我们定义了一个具有3行的数组,而这个数组的每一行都具有4个元素,所以这个二维数组一共具有3x4=12个元素。在使用多维数组时,同样与一维数组一样采用中括号下标表示法如:

array[0][0] = 0;
array[0][1] = 0;
array[0][2] = 0;
array[0][3] = 0;
array[1][0] = 0;
array[1][1] = 0;
array[1][2] = 0;
array[1][3] = 0;
array[2][0] = 0;
array[2][1] = 0;
array[2][2] = 0;
array[2][3] = 0;

        同样在中括号的下标不一定是数值,可以使用变量或表达式。例如我们通过一个双循环嵌套来显示这个二维数组:

for (int i = 0; i < 3; i++)
{
	for (int j = 0; j < 4; j++)
	{
		printf("%d\n", array[i][j]);
	}
}

        二、多维数组

        多维数组的定义与使用与一维和二维数组一致,只不过多了一些维度而已。我们来定义一个三维数组

int array[2][3][4] =
{
	{ {0,0,0,0},{0,0,0,0},{0,0,0,0} },
	{ {0,0,0,0},{0,0,0,0},{0,0,0,0} },
};

        这个三维数组共有2x3x4=24个元素。同样在使用多维数组时可以用中括号来取得其某个元素

array[1][2][3] = 345;

        再来看看多维数组赋值与显示的例子

for (int i = 0; i < 2; i++)
{
	for (int j = 0; j < 3; j++)
	{
		for (int k = 0; k < 4; k++)
		{
			array[i][j][k] = i * 12 + j * 4 + k;
		}
	}
}

for (int i = 0; i < 2; i++)
{
	for (int j = 0; j < 3; j++)
	{
		for (int k = 0; k < 4; k++)
		{
			printf("%d ", array[i][j][k]);
		}
	}
}

 

        三、存储方式

        理论上讲我们可以定义任意维度的数组和任意大小的数组,但它们并不是像数学上或物理上所定义的多维度一样,在内存中,多维数组也是通过一维线性的方式存储在一块连续的内存中的。例如:

int array[2][3] = 
{
		{ 0, 1, 2 },
		{ 3, 4, 5 }
};

        这个二维数组在内存中是这样存储的:

        也就是说我们虽然定义的是一个二维数组,但它实际在内存中仍然是一个连续的、线性的一维数组,只不过在使用时可以通过两个维度的下标来使用他们。同样多维数组也是这样的,我们来看一个三维数组array[2][3][2]在内存中存储的方式

        其实多维数组的本质与一维数组没有什么区别,只不过在使用时可以通过多维下标的方式来使用其元素,这样就使我们可以通过更人性化的方式来使用它们。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号