关于c语言的多维度

时间:2018-02-06 10:00:34

标签: c

如果数组初始化如下:

int a[4][3]={1,2,3,4,5,6,7,8,9};

有人可以帮我解释元素如何存储在数组索引中,比如[0] [0]将是哪个元素等等

3 个答案:

答案 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中的价值。