从C/Objective C中的2D数组中获取行数据

Jam*_*rth 2 c arrays multidimensional-array

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

采取以下2D阵列:int grid[4][4].我可以用整数填充它,所以在视觉上,它可能看起来像:

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 (每个细分新行)

现在,如果我只希望将一行数据作为标准数组给出,该怎么办?我想这样做的方式是: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
Run Code Online (Sandbox Code Playgroud)

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

我觉得我在做一些非常错误的事情......

没有错误消息,但它只是给"row1"一个随机的整数字符串,这绝对不正确.

aut*_*tic 5

请记住,在声明的数组中int grid[4][4],您只能存储四个元素(总共十六个).

你的阵列{ 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');
Run Code Online (Sandbox Code Playgroud)