【问题标题】:3D Arrays in C and Printing Its contentC 中的 3D 数组并打印其内容
【发布时间】:2014-04-02 20:05:00
【问题描述】:

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

所以我认为 Id 创建了一个 1 行 3 列的数组,其中 1 列用于 x y 和 z。我不再需要行,因为这个数字会不断更新,我不需要前一点的记忆,所以它只会被不断覆盖

这是我的数组

 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 是如何工作的,我猜是这样)并且它起作用了!。绿角的错误,我很抱歉!再次感谢您的帮助!

【问题讨论】:

    标签: c arrays multidimensional-array


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这是我尝试的第一件事。回想一下数组 101 和索引是 n-1 因为看起来我在数组边界之外的随机内存地址中获取元素。不幸的是,我仍然没有工作,我开始用头撞墙。
      • @CoffeePeddlerIntern printf("%d%d%d",coordinates[0][0],coordinates[0][1],coordinates[0][2]);应该可以正常工作。代码很好。
      【解决方案3】:

      应该是这样的

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多