二维数组int a[2][3], 里面包含两个一维数组a[0], a[1]
a a[0] a[1]都是数组名,a是整个二维数组的数组名,a[0] a[1]分别是两个小数组的数组名
对于数组名来说,有两种情况下代表整个数组,第一,&取地址 第二,sizeof求空间
又因为对指针变量做加1操作的时候,它的偏移量是这个指针类型的大小,因此:
&a + 1相对于a的地址偏移量是整个二维数组,即24
&a[0] + 1 相对于a[0]的地址偏移量是整个小数组(即一维数组), 即12
&a[1] + 1 相对于a[1]的地址偏移量是整个小数组(即一维数组), 即12
除了上述两种情况外(& sizeof),数组名代表的都是数组第一个元素的地址
即a 表示二维数组第一个元素(第一个一维数组a[0])的地址
所以a + 1相对于a的地址偏移量是一个一维数组的大小,即12
所以a[0] + 1相对于a[0]的地址偏移量就是一个元素(int)的大小,即4
a a[0] a[1]都是数组名,a是整个二维数组的数组名,a[0] a[1]分别是两个小数组的数组名
对于数组名来说,有两种情况下代表整个数组,第一,&取地址 第二,sizeof求空间
又因为对指针变量做加1操作的时候,它的偏移量是这个指针类型的大小,因此:
&a + 1相对于a的地址偏移量是整个二维数组,即24
&a[0] + 1 相对于a[0]的地址偏移量是整个小数组(即一维数组), 即12
&a[1] + 1 相对于a[1]的地址偏移量是整个小数组(即一维数组), 即12
除了上述两种情况外(& sizeof),数组名代表的都是数组第一个元素的地址
即a 表示二维数组第一个元素(第一个一维数组a[0])的地址
所以a + 1相对于a的地址偏移量是一个一维数组的大小,即12
所以a[0] + 1相对于a[0]的地址偏移量就是一个元素(int)的大小,即4