【问题标题】:Indexing elements in a 3-D array [duplicate]3-D数组中的索引元素[重复]
【发布时间】:2012-11-26 10:23:19
【问题描述】:

可能重复:
How do I use arrays in C++?

在下面的代码sn-p中:

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

a[i],a[i][j] 的答案是什么,其中 i

【问题讨论】:

  • 我希望this 有所帮助。
  • @PaperBirdMaster 不是真的。我仍然无法理解如何,例如 a[1]-a[0]=3 。但是您链接的文章很棒。谢谢
  • a[i]int ** 类型 a[i][j]int * 类型和 a[i][j][k]int 类型所以这三个都是不同的

标签: c++ c arrays


【解决方案1】:

我不完全确定您的问题是什么,但我会尝试向您解释索引:

您在示例中创建的是一个三维数组(或嵌套数组,如果您愿意的话)。

我相信你理解如下简单的数组

            ---x---
int a[3] = {1, 2, 3};

现在,当您请求 a[x] 时,x 将确定选择数组的哪个位置。

二维数组只是数组的数组

                ---------y--------
                ---x---    ---x---
int b[2][3] = {{1, 2, 3}, {4, 5, 6}};

当您请求b[y][x] 时,y 将确定选择两个一维数组中的哪一个,然后 x 告诉您该数组的位置。

一个三维数组只比这更高一级:数组数组的数组

                    ----------------------z--------------------
                    ---------y---------     ---------y---------
                    ---x---    ---x---      ---x---    ---x----
int c[2][2][3] = {{{1, 2, 3}, {4, 5, 6}}, {{1, 2, 3}, {4, 5, 6}} };

现在对c[z][y][x] 的请求会发送到第 z 个二维数组,然后发送到该二维数组的第 y 个一维数组,然后发送到该数组中的第 x 个位置。

c[z]c[z][y] 的请求只会产生数组地址,不会产生任何实际的int 值。

【讨论】:

    【解决方案2】:

    您必须记住的是,您正在使用 2 个不同的对象。

    a[i][j][k]
    

    a[i][j], a[i] and a
    

    第一个是int,其他3个是指针

    相关的内存如下所示:

    a       : | a[0] | a[1]|
                 \/     \______________________
    a[]     : | a[0][0] | a[0][1] | a[0][2] | a[1][0] | a[1][1] | a[1][2] |
                 \/         \______________
    a[][]   : | a[0][0][0] | a[0][0][1] | a[0][1][0] | a[0][1][1] | ...
    

    等等……

    现在在示例中,您让您使用指针进行算术运算,例如。 a[1] - a[0] = 3。如果您查看与内存相关联的机智,您会发现 2 个指针之间有 3 个内存位置,因此结果为 3。

    【讨论】:

    • 很好解释。不知道后面3个表格是指针。理解对我有帮助,非常感谢:)
    【解决方案3】:

    a[i] 和a[i][j] 是地址,与int a[2][3][2]={{{1,2},{9,8},{3,7}},{{2,2},{1,4},{5,4}}}; 中指定的值无关。这意味着 a[1]-a[0] 是 a 指向的第二个数组和第一个数组之间的字节数。

    【讨论】:

    • 我不明白你所说的“a 指向的第二个数组和第一个数组之间的字节数”是什么意思。你能解释一下 a[i]-a[0]=3 和 a [1][0]-a[0][0]=3 在代码中?
    • 不是字节数,内存位置数。 3 个整数之间有 12 个字节。
    【解决方案4】:
    a[0] = {{1,2},{9,8},{3,7}}
    a[1] = {{2,2},{1,4},{5,4}}
    
    a[0][0] = {1,2},                 a[0][1] = {9,8},                a[0][2] = {3,7}
    a[0][0][0] = 1,  a[0][0][1] = 2, a[0][1][0] = 9, a[0][1][1] = 8, a[0][2][0] = 3, a[0][2][1] = 7
    
    a[1][0] = {2,2},                 a[1][1] = {1,4},                a[1][2] = {5,4}
    a[1][0][0] = 2,  a[1][0][1] = 2, a[1][1][0] = 1, a[1][1][1] = 4, a[1][2][0] = 5, a[1][2][0] = 4
    

    【讨论】:

      猜你喜欢
      • 2013-08-07
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      • 2013-06-21
      • 1970-01-01
      • 2018-03-21
      • 2012-02-12
      相关资源
      最近更新 更多