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