我有一个二维数组,如下所示:
struct tab **table;
table = new tab*[n+1];
for(int i = 1; i < n+1; i++)
table[i] = new tab[n+1];
现在我有了一个指针,指向2维数组的某一行,名为tab* start = table[10]
。我的怀疑是,比如说,我调用一个函数并将start作为参数传递。那么,我如何使用start获得表的行索引(即本例中的10 )?
发布于 2016-03-04 20:18:29
您不能这样做,因为您正在使用动态内存分配;这意味着元素不会存储在连续的内存位置。
但也许这并不是你所认为的table10和&table10是不同的东西。
由于您使用的是指向指针的指针,因此可以使用偏移量来获取任何&tabindex元素的索引。它们是由table = new tab*[n+1]
分配的2D数组中的列,存储在连续的内存位置中。这些位置中的每一个都有一个制表符*,所以矩阵的行数。
https://stackoverflow.com/questions/35794340
复制相似问题