1

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

4

3 回答 3

2

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

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

于 2013-02-11T04:03:10.110 回答
1

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

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

于 2013-02-11T04:05:58.357 回答
0

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

于 2013-02-23T14:50:11.627 回答