【发布时间】:2017-09-16 09:36:49
【问题描述】:
如何访问具有 i 行和 j 列的 2D 指针数组中的元素 0-K? 我无法看到如何使用嵌套的 for 循环来索引所需的元素,因为不知道 K 是小于还是大于 i 或 j。
所以,我认为有必要提供不同的条件:
if (K < j) {
//index through the first row
}
while (K > j) {
//do some manipulations to determine how many rows to index through
}
但这似乎是不必要的复杂。有没有办法使用指针和解引用器从二维指针数组中获取元素 K 的值?
比如说,我想从这个数组中取出值 7:
(注意:这张图片并不能准确反映二维指针数组的外观......我知道本质上是一维数组的数组。)
【问题讨论】:
-
不清楚你想要什么。举个例子。
-
二维数组的第 K 个元素将是一维数组。这就是你所追求的吗?
-
"不知道 K 是小于还是大于 i 或 j。" --> 如果
K太大,“访问元素 0-K”不可能。 -
如果你有
int array[10][10];并且你想要Kth元素,你可以用array[K / 10][K %10]访问它,如果K < 100。 -
for(int r = 0; r < i; ++r){ for(int c = 0; c < j; ++c) { if(r * j + c <= K) access(array[r][c]); } } }
标签: c pointers multidimensional-array indexing