c语⾔⼆维数组表⽰坐标,c语⾔多维数组地址的表⽰⽅法
c语⾔多维数组地址的表⽰⽅法
导语:我们知道数组名就是指针常量。下⾯让我们了解⼀下多维数组的地址表现⽅法。
设有整型⼆维数组a[3][4]如下:
0 1 2 3
4 5 6 7
8 9 10 11
设数组a的⾸地址为1000,各下标变量的⾸地址及其值如图所⽰。在第四章中介绍过, C语⾔允许把⼀个⼆维数组分解为多个⼀维数组来处理。因此数组a可分解为三个⼀维数组,即a[0],a[1],a[2]。每⼀个⼀维数组⼜含有四个元素。例如a[0]数组,含有a[0][0],a[0] [1],a[0][2],a[0][3]四个元素。 数组及数组元素的地址表⽰如下:a是⼆维数组名,也是⼆维数组0⾏的⾸地址,等于1000。a[0]是第⼀个⼀维数组的数组名和⾸地址,因此也为1000。*(a+0)或*a是与a[0]等效的, 它表⽰⼀维数组a[0]0 号元素的⾸地址。 也为1000。&a[0][0]是⼆维数组a的0⾏0列元素⾸地址,同样是1000。因此,a,a[0],*(a+0),*a?
amp;a[0][0]是相等的。同理,a+1是⼆维数组1⾏的⾸地址,等于1008。a[1]是第⼆个⼀维数组的数组名和⾸地址,因此也为1008。 &a[1][0]是⼆维数组a的1⾏0列元素地址,也是1008。因此a+1,a[1],*(a+1),&a[1][0]是等同的。 由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。 此外,&a[i]和a[i]也是等同的。因为在⼆维数组中不能把&a[i]理解为元素a[i]的地址,不存在元素a[i]。
C语⾔规定,它是⼀种地址计算⽅法,表⽰数组a第i⾏⾸地址。由此,我们得出:a[i],&a[i],*(a+i)和a+i也都是等同的`。另外,a[0]也
可以看成是a[0]+0是⼀维数组a[0]的0号元素的⾸地址, ⽽a[0]+1则是a[0]的1号元素⾸地址,由此可得出a[i]+j则是⼀维数组a[i]的j号元素⾸地址,它等于&a[i][j]。由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由于*(a+i)+j是⼆维数组a的i⾏j列元素的⾸地址。该元素的值等于*(*
(a+i)+j)。
[Explain]#define PF "%d,%d,%d,%d,%d,/n"
main(){
static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
printf(PF,a,*a,a[0],&a[0],&a[0][0]);
printf(PF,a+1,*(a+1),a[1],&a[1],&a[1][0]);
printf(PF,a+2,*(a+2),a[2],&a[2],&a[2][0]);
c语言二维数组表示方法
printf("%d,%d/n",a[1]+1,*(a+1)+1);
printf("%d,%d/n",*(a[1]+1),*(*(a+1)+1));
}
【c语⾔多维数组地址的表⽰⽅法】相关⽂章:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。