指针与二位数组的关系

本文深入探讨了指针在二维数组中的应用,特别是行指针和列指针的概念。通过例子展示了如何声明和使用行指针来访问二维数组的元素,以及如何通过列指针将二维数组视为一维数组进行操作。内容包括指针声明、二维数组的地址理解以及不同方式表示数组元素的表达式。
摘要由CSDN通过智能技术生成

 说明:指针变量中“*”的作用:

1.声明指针变量

2.取相应地址的内容

//要学会运用行列指针引用二维数组元素就要先理解二维数组的行列地址,下面对二维数组的行列地址进行解释。

一.二维数组的行列地址

就以二维数组啊a[3][4]为例:

a[0][0]a[0][1]a[0][2]a[0][3]
a[1][0]a[1][1]a[1][2]a[1][3]
a[2][0]a[2][1]a[2][2]a[2][3]

行地址

二维数组名a可看做一个双重指针,a[i]为二维数组i+1行的首地址,a[i]可看做一个指向含有四个元素数组的数组指针。故二维数组名a为二维数组第一行的首地址的地址。以此类推,a+i为二维数组第i+1行的首地址的地址。即:

a+1(&a[1]),a+2(&a[2]),a+i(&a[i])

a[0]第一行的首地址
a[1]第二行的首地址
。。。。。。

列地址

在行地址的基础上,进行加减运算,便是列地址

a[0]+0—— a[0][0]的地址a[0]+1 ——a[0][1]的地址。。。
。。。。。。。。。

二.用行指针和列指针引用二维数组

行指针

int (*p)[4];//定义了一个指向含有四个元素的数组的数组指针
p=a;//将a的地址赋给了指针变量p;等效于p=&a[0];

经过上述定义后,对于二维数组中的元素a[i][j],就可运用以下几种行指针的方式来表示啦:

1.*(p[i]+j)

2.*(*(p+i)+j)

3.(*(p+i))[j]

可以通过下图(二维数组与相应指针在内存中的储存方式)加深对行指针表示元素的理解

内容地址
a[i][0]&a[i][0]
&a[i][0]a[i]数组指针
a[i]a+i

列指针

运用列指针,就要将二维数组视为一长串连续的一维数组

int *p;
p=*a;//等价于p=a[0];p=&a[0][0];

经过上述定义后,对于二维数组中的元素a[i][j],就可运用以下几种列指针的方式来表示啦:

1.*(p+i*n+j)

2.p[i*n+j]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值