【问题标题】:Getting data in rows from a 2D array in C/Objective C从 C/Objective C 中的二维数组中获取行中的数据
【发布时间】:2015-07-25 08:42:00
【问题描述】:

这是一个非常简单的问题,但我找不到有效的答案。

采用以下二维数组:int grid[4][4]。我可以用整数填充它,以便在视觉上看起来像:

1,0,0,5,00,0,0,6,73,0,0,0,72,0,0,0,94,0,0,2,0(每段一个新行)

现在,如果我只想将一行的数据作为标准数组给出怎么办?我想这样做的方式是:grid[0],这会给我 1,0,0,5,0。

但是,这似乎不起作用。谁能告诉我如何提取数据行?这是一个代码示例

int grid[4][4];

//Add in some numbers, e.g.
grid[0][3] = 5;

//Get the first row
int* row1 = grid[0]; //I'm not sure about this

例如,此示例应将“row1”设置为“0,0,0,5,0”

我觉得我在这里做错了什么......

没有错误信息,只是给“row1”一个随机的整数字符串,这绝对是不正确的。

【问题讨论】:

  • 您的grid 未初始化,因此它会打印一组随机整数(当然)。试试int grid[4][4] = {{0}}; :-)

标签: c arrays multidimensional-array


【解决方案1】:

请记住,在声明为 int grid[4][4] 的数组中,您只能存储四个元素的四个批次(总共 16 个)。

您的数组{ 1,0,0,5,0 }, { 0,0,0,6,7 }, { 3,0,0,0,7 }, { 2,0,0,0,9 }, { 4,0,0,2,0 } 实际上是一个int [5][5]

你的做法没有错; row1 将是指向grid[0] 第一项的指针。如果您想打印每个元素,这是一个好的开始...

当我提到“循环”这个词时,您可能会意识到......然后您需要一个“循环”来循环遍历行的每个元素!

int *row = grid[0];
for (size_t x = 0; x < sizeof grid[0] / sizeof grid[0][0]; x++) {
     printf("%d, ", row[x]);
}
putchar('\n');

【讨论】:

  • @parkgatedev 不客气!如果这是您最喜欢的答案,请给它您的“打勾”以表示认可... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 2015-09-01
  • 2013-05-14
  • 1970-01-01
  • 2012-04-23
  • 2022-01-25
相关资源
最近更新 更多