|
|
发表于 2012-6-28 09:38:45
|
显示全部楼层
对于数组 da[3][4],为了让你看清楚,还是赋值你看下吧。
da[3][4] =
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
}
所以这个二维数组包含三个数组元素,每个数组有4个元素,这个数组首地址是, &da[0][0], 也相当于da[0], 对于一维数组,
int a[10], a 相当于&a[0], 其实二维数组也可以看成一维数组的嵌套,就是数组的元素也是数组,所以da 相当于 &da[0], 但是你应该知道,一维数组 &a[0]的类型是 int *类型了,因为它的元素是 int 类型,但是 二维数组的元素是数组,所以&da[0] 的类型成了
int (*)[]类型,也就是数组指针类型了, 也就是da的类型是数组指针类型,那么da+1就很明显了,一个指针+1,就是加上它所指向的类型的长度,da是数组指针,da+1就是加上了第一行{1,2,3,4} ,这个数组的长度,这个数组是四个int类型 ,长度是16,所以da+1,就是da+16,其实。。。。da的值,跟数组的首地址是一样的,类型不一样。所以这个值在加上16.。数组的元素在内存空间都是连续存放,之间没有空隙。。。从第一元素到最后一个元素。所以这里da的值加了16以后,正好成了{5,6,7,8}这个数组的首地址,也就是元素 5或者 da[1][0] 的地址。。。
|
评分
-
查看全部评分
|