关于指针的理解的比喻(理解一点就添加一点)

我把指针当做钥匙(指针)每把钥匙都可以匹配一个密码(地址)开启一个柜子(内存)
1,。指向一个数据的指针
int a=10;
int * p;
p=&a;
就如:
一把钥匙p匹配柜子a的密码,柜子里放着数据(10),这把钥匙就可以开启a,并操作它
2,给指针重新指向一个新数据:
int b=20;
p=&b;
就如:用钥匙p匹配另一个柜子b的密码,柜子里是(20),原先的柜子a没变只是p不在有开启a的密码无法去处理a;
3,指针的指针
int **pp=&p;//p本身就是个指针
放钥匙a(指针)的地方也是柜子(内存),本身也是有密码(地址)的,现在有一个钥匙b的密码(地址)是这个柜子的密码(地址)
这个钥匙b就是钥匙a的钥匙;
4,指向数组的指针
int a[4]={0};
int pa=a;
数组就是一排相邻的柜子如:
柜子a柜子b柜子c柜子d
当然他们的密码(地址)也是相邻的,而钥匙pa就是柜子a的密码
而int是有长度的L,钥匙pa+1其实就是a密码+1个L;
5,指向二维数组的指针;
int b[2][3]={0};
int (pb)[3]=b;
其实还是一排柜子的事情只是现在柜子是这样的
(柜子a柜子b柜子c) (柜子d柜子e柜子f)
柜子还是相邻的只是二维数组就是把数组分成单元和单位的区别柜子abc是一个单元(b[0])而a就是abc单元里的一个单位,
现在有一把钥匙pb(柜子a的密码)也就是二维数组的指针
结合4的所述就会发现我们先把二维数组当一维数组看就是一个有两个大柜子(一个柜子有三个小柜子的那种)(3个int 的长度3L)
所以钥匙pb+1,就是第二单元的柜子d的密码
那么如何开启第一单元的第一二个柜子呢就是柜子b,
先取单元的钥匙pb(第一单元的钥匙)(
(pb+0))在在单元里取第二个柜子的钥匙((
(pb+0)+1)这里((pb+0))整体就是第一单元第一单位的地址而(((pb+0)+1)就是第一单元第二个单位的地址;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值