在c ++中引用子数组2D

时间:2013-08-15 09:15:04

标签: c++ arrays pointers reference

有没有办法在C ++中创建一个像子数组一样的指针?与this的答案一样,但有2个维度。更具体地说,我想拥有

int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int subarr ** = arr[1][1];

这样subarr[0][0] == 5

2 个答案:

答案 0 :(得分:1)

不,这是不可能的。在您的示例中,数组不会驻留在连续内存中,因此无法使用数组下标正确访问。

我假设您希望subarr包含{{5,6},{8,9}}

arr将在内存中显示为(|仅用于可视化):

  

| 1 2 3 | 4 5 6 | 7 8 9 |

subarr试图找出某些通过乘法维度无法实现的元素并添加数组下标运算符的偏移方法:

1 2 3 4 5 6 7 8 9
        ^ ^   ^ ^      

答案 1 :(得分:0)

不是一个int数组(一个二维的int数组仍然是一个int数组)。 如果你有一个指向int数组的指针数组,那么是的。那么问题是有道理的,答案是显而易见的。