多维数组如何工作?

时间:2016-11-23 07:21:15

标签: c arrays

在这个程序中,一个数组有3种大小。第一个尺寸是指行,第二个是指列,但第三个是什么?我有另一个问题,数组引用%s来打印。但是在这个由%d打印的程序数组中。由于数组分配给x值。哪个是int数据类型,但我们打印数组。那么%d怎么样?

#include<stdio.h>

int main(void) {
    char array[3][3][3];
    int i,j,k;

    int x = 1;

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

        }

    }
    return 0; }

5 个答案:

答案 0 :(得分:4)

char[3]填充的内容如下:

+---+---+---+
| 1 | 1 | 1 |
+---+---+---+

char[3][3]填充的内容如下:

+---+---+---+
| 1 | 1 | 1 |
+---+---+---+
| 1 | 1 | 1 |
+---+---+---+
| 1 | 1 | 1 |
+---+---+---+

char[3][3][3]填充的是一对一的正方形阵列。会有一个立方体。

enter image description here

在上图中,每个小立方体将代表单个细胞,因此总共有27个细胞。

我很高兴你没有问过char[3][3][3][3]

答案 1 :(得分:0)

首先从第二个问题开始,你有一个由(小)整数组成的数组数组。如何使用printf打印整数?您(可以)使用"%d"格式。你很困惑(我猜)因为字符串(用"%s"打印)是字符数组。但是,您不打印数组,而是打印单个int值。

至于第一个问题,部分答案在上段。你有一个由三个三(小)整数数组组成的三个数组的数组。行和列只是标签,对于“3d”数组,它们没有多大意义。

答案 2 :(得分:0)

关于数组[3] [3] [3]的问题,这是一个三维表。您可以将其视为三个二维表。 表0:3x3 表1:3x3 表2:3x3

行和列是我们用于更好地理解2维元素概念的描述。数组可以有更多的维度 - 如果它对你有帮助,你可以把它想象成列表(列表(列表(..))

关于字符问题和整数表示,字符和整数可以在C中以相同的方式使用。字符本质上是由ASCII表中的字符索引表示的ASCII字符。即。 'a'是97.

答案 3 :(得分:0)

让我们考虑一下书。本书页面上的一行是一维数组。整个页面是一个二维数组。整本书是一个3d数组。让我们假设,这本书是在一个盒子里,然后该框代表一个4d数组。一组盒子是5d阵列。所以,你可以考虑更多。因此,我们将第一个框的第一本书的第一页的第一个元素表示为[0] [0] [0] [0] [0]。

%s - Take the next argument and print it as a string
%d - Take the next argument and print it as an int

这里,您的数组元素是整数。您的代码逐个打印数组元素。

答案 4 :(得分:-1)

%d用于十进制,%s用于字符串。 这里是3D阵列的表示,第三个维度是&#34;深度&#34;换句话说,第i行和第j列的内容(在2d数组中将是一个元素,但在3D数组中是一个数组)

int myFirst3DArray [3][4][2] = 
{
  {{10,11},{12,13},{14,15},{16,17}},
  {{18,19},{20,21},{22,23},{24,25}},
  {{26,27},{28,29},{30,31},{32,33}}
};