我正在尝试做一些应该简单的事情。我正在制作一个只有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是如何工作的,我猜)并且它有效!绿角错误,我很抱歉!再次感谢您的帮助!
答案 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