C ++中的指针/多维数组

时间:2013-02-11 04:01:53

标签: c++ arrays pointers

我在理解指针时有点麻烦。如果我声明了一个多维数组char ma[10][30]。元素"ma[2][20]"的地址是什么?如果地址必须分配给指针变量,那不是"p = &ma[2][20]"。)

3 个答案:

答案 0 :(得分:2)

ma[2][20]的地址为ma[2] + 20 因为ma是一个字符数组

p = &(ma[2][20]) - 非常确定括号很重要......

答案 1 :(得分:1)

多维数组实际上只是一块连续的内存。在这种情况下,数组是一个字符块(字节)10 * 30 = 300字节大小。编译器通过两个“维度”处理对该数组的访问。

ma [2] [20]的地址是'ma'+ 2 * 30 + 20或'ma + 80'字节的地址。 'ma'是表示数组的内存块的起始地址。

答案 2 :(得分:0)

在静态数组中,内存分配是连续的。可以通过以下示例进行详细说明 int arr [2] [5] = {{1,2,3,4,5},{6,7,8,9,10}}; COUT<