在C语言中规定,数组名代表的是数组首元素地址。a是二维数组的数组名,因此,在二维数组中*(a+i)表示的是第i+1行0列元素的地址,即a[i][0]的地址。而a+i表示的是第i+1行的首地址。
对于二维数组来说,例如a[x][y],在空间结构上,x表示行,y表示列。所以*(a+i)表示的是第i行的行首地址,所谓行首地址,也就是该行的数组成员的首地址。是可以等同的视为&a[i][0]的。所以,这里的*(a+1)代表第一行的数组成员的首地址。第一行数组成员为{3,4},所以*(a+1)也就指向&...
1. *a:以a[0][0]为首元素的一维数组.可带一个索引:(*a)[i] 即a[0][i] 2. a:以a[0][0]为首元素的二维数组.可带两个索引:a[i][j] 3. a[0]:同*a 4. a[0][0]:首元素 5. a[1]:以a[1][0]为首元素的一维数组.可带一个索引. 6. &a[1]:以a[1][0]为首元素的...
可以这么说吧, 在二维数组中,数组名a指向二维数组的第一行,就是&a[0]. a+i就是代表第i行地址,即&a[i]. 而*(a + i)是求第i行首元素的值,就是a[i]. 这时指针从指向行元素转为指向列元素.*(a + i)+j就是a[i]+j,是a[i][j]的地址. *(*(a + i)+j)是a[i][j]的值.
a[i]和*(a+i) 表示的是同一个地址,对于数组来说,计算机计算地址都是以*(a+i)进行计算,也就是换算成指针的形式.对于二维数组,你要搞清楚所取的地址是对谁而言的.很显然,a[i]是第i行的地址,这是相对于行而言的,也就是说,a[i+1]就是下一行的地址了.&a[i]是不一样的,首先,a[i]是...
1. *a:以a[0][0]为首元素的一维数组。可带一个索引:(*a)[i] 即a[0][i]2. a:以a[0][0]为首元素的二维数组。可带两个索引:a[i][j]3. a[0]:同*a 4. a[0][0]:首元素 5. a[1]:以a[1][0]为首元素的一维数组。可带一个索引。6. &a[1]:以a[1][0]为首...
指针P的基类型与a[i]相同,也就是说数组名本身就是指针,其值就是内存地址,两者的数据类型是相同的,因此可以直接作为指针使用。赋值语句p=a[i]是合法的,这个也很好理解,因为数组名本身就是数组第一个元素所在内存地址的指针,因此该语句的作用是把这个内存地址赋值给p这另一个指针变量。
1. *a:以a[0][0]为首元素的一维数组.可带一个索引:(*a)[i] 即a[0][i]2. a:以a[0][0]为首元素的二维数组.可带两个索引:a[i][j]3. a[0]:同*a4. a[0][0]:首元素5. a[1]:以a[1][0]为首元素的一维数组.可带一个索引.6. &a[1]:以a[1][0]为首元素的二维数组.可带两...
&a[i]是指向数组第i个元素的地址,而a[i]是指向该元素的值~&是取地址符,表示地址~