C中的3D数组和打印其内容

时间:2014-03-01 18:35:47

标签: c arrays multidimensional-array

我正在尝试做一些应该简单的事情。我正在制作一个只有1个元素的数组。这是坐标x y z

所以我想Id生成一个包含1行3列的数组,x y和z为1列。我不再需要行了,因为这个数字会不断更新,我不需要记忆前一点,所以它只会被不断覆盖

所以这是我的数组

 int coordinates[1][3] = {1,1,1};

这就是我试图看看我是否正确构建它并打印出值的方法。

printf("%d %d %d\n", coordinates[1][1],coordinates[1][2],coordinates[1][3] );
printf("\n");

我认为它会打印第1行第1列,第1行第2列和第1行第3列。

我的想法在这里出了什么问题?我没有得到1 1 1作为我的结果。我得到随机数字。

我对C不太熟悉。这看起来很微不足道,我开始过多地旋转我的车轮了。

编辑:我的工作过程(另见评论)

“这是我尝试的第一件事。回想一下数组101和索引是n-1因为看起来我在数组范围之外的随机内存地址中得到了元素。但是不幸的是我开始打败我靠在墙上。“

我确实尝试了

printf("%d %d %d\n", coordinates[0][0],coordinates[0][1],coordinates[0][2] );
printf("\n");

但我又得到了随机数

结论

好的,我终于弄清楚我做错了什么。你们都是对的。我正在寻找我的代码的错误位置。感谢您的及时回复。发生的事情是我最初在我的代码中将我的坐标称为浮点数。我没有在这里复制和过去,所以我在这里称它为int。因此,当我尝试使用%d打印时,它试图为浮动打印一个int,导致混乱的结果。我将%d切换到%f(我不知道printf是如何工作的,我猜)并且它有效!绿角错误,我很抱歉!再次感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

请记住,数组索引从C开始,此规则也适用于多维数组。

对于数组int coordinates[1][3],其元素为coordinates[0][0]coordinates[0][1]coordinates[0][2]

答案 1 :(得分:1)

应该是这样的

printf("%d %d %d\n", coordinates[0][0],coordinates[0][1],coordinates[0][2] );

因为索引从零开始而不是一个。

答案 2 :(得分:1)

它应该被索引为cordinates [0] [0],cordinates [0] [1],cordinates [0] [2],因为数组索引通常从0开始。
这里坐标[1] [3],表示行大小为1,但使用0进行索引。相似的列从0到3索引,即0到大小-1