了解将多维数组转换为一维数组

时间:2014-09-30 19:22:11

标签: c arrays multidimensional-array

我已经研究和研究过stackoverflow上的多维数组here有一个非常好的解释,但是对于任何想要帮助的人我几乎没有跟进问题。这不是一个硬件问题,它是我的教科书中我想要了解的更多所以请确认我是否正确地查看下面的例子。提前谢谢。

所以,如果我有一个像这样的三维数组:

                  {{{'1','2'},{'3','4'}},
                   {{'5','6'},{'7','8'}},
                   {{'9','10'},{'11','12'}}};

Would the one dimensional outcome (using c compiler) simply be?: +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | | | | | | | | | | | | | | +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ And the corresponding position as? +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | | | | | | | | | | | | | | +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

我再次使用this链接作为我的来源。 作为一种答案,我唯一想要的是,我正在寻找/正确地做这件事吗?如果没有,如果你能告诉我在哪里犯了任何错误,我将不胜感激。再次感谢你。

2 个答案:

答案 0 :(得分:1)

1

char [3][2][2] :

+-----+-----+         +-----+-----+
|+-----+-----+        |+-----+-----+
||   1 |   3 |        ||  4  |  5  |
||1,0+-----+-----+    ||   +-----+-----+
|+---|  a  |  b  |    |+---|  0  |  1  |
||  2|0,0,0|0,0,1|    ||  6|     |     |
+|1,1+-----+-----+ => +|   +-----+-----+
 +---|  x  |  y  |     +---|  2  |  3  |
     |0,1,0|0,1,1|         |     |     |
     +-----+-----+         +-----+-----+

所以你的结果似乎没问题,因此(2.)t3 [0]应该是a。

2

如果t2看起来像这样,t2 [0] [1]是b:

+-----+-----+-----+-----+      +-----+-----+-----+-----+
|  a  |  b  |  x  |  y  |      |     |     |     |     |
|0,0,0|0,0,1|0,1,0|0,1,1|      | 0,0 | 0,1 | 0,2 | 0,3 |
+-----+-----+-----+-----+      +-----+-----+-----+-----+
|  1  |  3  |  2  |  7  |  =>  |     |     |     |     |
|1,0,0|1,0,1|1,1,0|1,1,1|      | 1,0 | 1,1 | 1,2 | 1,3 |
+-----+-----+-----+-----+      +-----+-----+-----+-----+
|  q  |  g  |  r  |  4  |      |     |     |     |     |
|2,0,0|2,0,1|2,1,0|2,1,1|      | 2,0 | 2,1 | 2,2 | 2,3 |
+-----+-----+-----+-----+      +-----+-----+-----+-----+

只要您以正确的方式转换它们(因为它似乎根据链接)它应该工作...

答案 1 :(得分:0)

对于概念性理解,这是一个很好的起点。

但是你应该了解行与专栏之间的区别。从技术上讲,它可能因编译器和语言的不同而不同。

http://en.wikipedia.org/wiki/Row-major_order

相关问题