&a[i]是指向数组第i个元素的地址,而a[i]是指向该元素的值~&是取地址符,表示地址~
&a[i] 取得a[i][0]的地址,它和首地址是一个位置,那么地址肯定是相同的;a+i,就是a 偏移i 个单位,在本质上是和 a[i]一样的,a[i]的理解就应该是a 偏移i 个单位;
a[i]和*(a+i) 表示的是同一个地址,对于数组来说,计算机计算地址都是以*(a+i)进行计算,也就是换算成指针的形式.对于二维数组,你要搞清楚所取的地址是对谁而言的.很显然,a[i]是第i行的地址,这是相对于行而言的,也就是说,a[i+1]就是下一行的地址了.&a[i]是不一样的,首先,a[i]是...
C语言中二维数组的引用和地址有什么区别吗?比如a[i]地址&a[i],a+i,p+i,引用a[i],*(a+i)(这不应该是地址吗你这种情况比较复杂!一个数组名本身是一个常量地址,比如数组a[10],a就是该数组在内存分配空间的起始地址。
是的,两种不同的写法,本质都是取那个地址存在的值。a[i][j]是第i行(0算起)第j列(0算起)的元素值。a+i是第i行的行指针,那么*(a+i)就是第i行第0个元素的指针,自然*(a+i)+j就是第i行的第j个元素的指针了,最后通过这个指针用*取出来的值*(*(a+i)+j)不就是第i行第j列的...
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这另一个指针变量。
对于二维数组a[2][3],数组名a表示的是这整个数组的首地址,a[0]表示的是第一行的首地址,&a[0][0]表示第一个元素的地址,这三者在数值上是一样的,但含义不同,数组名a是对于整个数组而言的,a[0]是对于第一行而言,而&a[0][0]是针对具体的第一个元素。大概知道这些,能分辨这几种就可以了。您...
a+i和*(a+i)的值相同没错,但它们的类型不一样,代表的意义也不一样。a+i还是2维指针,*(a+i)则是一维指针。编译器对它们的解析和操作是不一样的。
A[i]也是一个数组, 如果我们把二维数组看成是一个矩阵的话(C语言是以行优先存储的),那么A[i]就是第i行的第一个元素的地址