这个是可以像一维数组一样使用的,但是我们学习数组的时候,不要忘记了数组就是数组,指针就是指针,有时候把数组当指针使用,那就要了解清楚它们的特性。 #include"stdio.h"intmain(){intarr1[4]={1,2,3,4};intarr2[4][4]={{1,2,3,4},{12,22,32,42},{13,23,33,43},{14,24,34,44}};int*par...
在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)也就指向&...
a[i]=*(&a[i]),为数组的一个列指针。a+i=&a[i],为数组的一个行指针,也是列指针a[i]的地址。*(*(a+i))=*(*&a[i])=*a[i],*a[i],表示第(i+1)行第1列的元素。~③综上所述 (a+i)、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]为首...
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]为首...
在C语言中,二维数组由多个一维数组构成,数组名a指向第一个一维数组的首地址,仍为地址。表达式a+1中的a是二级指针,指向数组a[0]的一维数组(表示行),1表示行移动1位,因此a+1表示的是1行0列的地址。而在*(a+1)中,a同样是二级指针,其值为指向一维数组的一级指针,即二维数组中的行。
a+i和*(a+i)的值相同没错,但它们的类型不一样,代表的意义也不一样。a+i还是2维指针,*(a+i)则是一维指针。编译器对它们的解析和操作是不一样的。
设p是指向*( p+i*N+j) 同样,a[i][j]也可使用指针下标法表示,如下: p[i*N+j] 例如,有如下定义: int a[3][4]={{10,20,30,40,},{50,60,70,80},{90,91,92,93}}; 则数组a有3个元素,分别为a[0]、a[1]、a[2]。而每个元素都是一个一维数组,各包含4个元素,如a[1]的4个元素是a...
它们的值都是所指向的数组元素所对应的地址值,都是元素a[i][0]的地址,故相等。a+i , a[i] , *(a+i) 都是地址,而*(*(a+i)+j)才是二维数组元素a[i][j]。望对你有帮助!