【发布时间】:2017-01-18 23:49:03
【问题描述】:
我试图弄清楚如何将二维数组作为一维数组循环。由于二维数组会占用连续的内存,有没有办法通过将索引更改 4 个字节来将二维数组寻址为一维数组。我假设一个整数数组。有人可以提供一个例子吗?我尝试了以下方法,但它不起作用:
for (int i = 0; i < 2; i++){
for (int j = 0;j < 2; j++){
z[i][j] = count;
count++;
}
}
for (int i = 0; i < 4; i++)
printf("%d\n", z[i]);
【问题讨论】:
-
只使用第一个子数组...例如。对于
int arr[3][3]索引arr[0]从arr[0][0]到arr[0][8]... 或使用int *,例如:int *p = arr[0];并使用p[0]...p[8] -
德米特里,你的评论没有任何意义。当 arr[0][8] 被声明为 [3][3] 时,如何访问它?
-
建议的副本不好;这是使用复杂的方案来访问具有 2 个下标的 2D 数组,而这试图访问具有 1 个下标的 2D 数组(除非我误解了代码)。