在图中,我们定义了一个int类型的二维数组。在这个数组中,数组名找到的就是第0行的地址,所以我们在数组名上加1可以找到第1行的地址,再*操作就可以得到第一行的空间。在得到行空间的基础上想要得到这行中某一成员的空间,就要在这个行空间上加上偏移量,找到某一成员的地址,再*操作就可以得到成员的空间了。这其实就是二维数组寻找成员空间的计算过程,化简之后就变成了数组名[][],前面是行后边是列。那么二维数组名取地址找到的就还是二维数组的地址,它加上1找到的就是二维数组后面的地址,并且*操作后得到的空间大小与二维数组的空间大小相等。接下来看这几个问题:
1.二维数组的存储本质?
答:它是存储一维数组的一维数组。在书写两个[]时要遵循先行后列的原则。并且可以不写行数,计算机会根据列数与成员数量自动划分行数,但是列数一定要写。
2.二维数组名代表什么?
答:代表第0行的地址。
3.二维数组名+1与&二维数组名+1的区别?
答:二维数组名+1是二维数组中的行偏移,找到的是后面一行的地址,而&二维数组名+1属于是二维数组的偏移,找到的是二维数组后面的地址。
4.多维数组的空间访问原理?
答:我认为他就是一个嵌套寻找空间的过程,就是不断利用*(参考地址+偏移)这个公式来逐层寻找空间。如果是访问三维数组中某一成员的空间,那么就是三层嵌套,第一层先利用数组名加偏移找到某一个平面的地址,对他*操作后得到这个平面的空间,再利用这个空间加偏移找到这个平面中某一行的地址,*操作后得到这行的空间,最后利用得到的这个行空间加偏移找到某一个成员的地址,对整体*操作后就可以得到这个三维数组中某个成员的空间了。