如果数组初始化如下:
int a[4][3]={1,2,3,4,5,6,7,8,9};
有人可以帮我解释元素如何存储在数组索引中,比如[0] [0]将是哪个元素等等
答案 0 :(得分:1)
说明:
int a[4][3]={1,2,3,4,5,6,7,8,9};
相当于:
int a[4][3] = {
{1,2,3}, //every row contains 3 element because second dimension is 3
{4,5,6},
{7,8,9}
};
使用这种表示方式,您可以轻松识别给定数组中特定位置的值。
a [0] [0]将是哪个元素等等
a[0]
为{1,2,3}
,在此数组中,0 th 位置的元素为1
。所以,
a[0][0]
为1
,同样为
a[0][1]
是2
a[0][2]
是3
a[1][0]
是4
等等。
您可以编写一个程序以便更好地理解,例如:
#include <stdio.h>
int main() {
int a[4][3]={1,2,3,4,5,6,7,8,9};
int i,j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf ("a[%d][%d] : %d\n", i, j, a[i][j]);
}
}
return 0;
}
该程序的输出是:
a[0][0] : 1
a[0][1] : 2
a[0][2] : 3
a[1][0] : 4
a[1][1] : 5
a[1][2] : 6
a[2][0] : 7
a[2][1] : 8
a[2][2] : 9
a[3][0] : 0
a[3][1] : 0
a[3][2] : 0
在这里,您可以看到最后一行(a[3]
)包含所有元素值0
。这是因为在数组初始化中,如果初始化器的数量少于数组中的元素,则剩余的元素会自动初始化为0
。由于您在3
行数组的初始化中仅提供4
行,因此最后一行的元素将使用0
进行初始化。
数组a
是:
1 2 3
4 5 6
7 8 9
0 0 0
答案 1 :(得分:0)
一个多维数组存储数组。假设你有arr [4] [3],这意味着那个数组&#34; arr&#34;由4个数组组成,每个数组都在第二个括号中指定。
另外,为了分配多维数组,你应该这样做
int arr[size1][size2] = {{contents of first},{content of second},{content of third},{etc}};
arr [0] [0]将包含位于第一个数组的第一个索引
的元素答案 2 :(得分:-1)
在其上映射多维数据可以通过多种方式完成。 2D Array中主要有两种类型的数据存储过程。
1.Row Major
计算机内存将表示为线性阵列,左侧为低地址,右侧为高地址。此外,我们将使用程序员符号表示矩阵:行和列以零开头,位于矩阵的左上角。行索引从上到下遍历行;列索引从左到右遍历列。
如上所述,在行主要布局中,矩阵的第一行放在连续的内存中,然后是第二行,依此类推。
Row Major的图片: - 点击下面
Array & Memory Representation of Storing Data in 2D Array by Row Major
2.Column Major
描述列主要2D布局只是采用行主要描述并替换&#34; row&#34;的每个外观。 by&#34; column&#34;反之亦然。矩阵的第一列放在连续的内存中,然后是第二列,依此类推:
专栏图片:---点击下面
Array & Memory Representation of Storing Data in 2D Array by Column Major
我希望这可以帮助您了解存储在araay中的价值。