指针浅谈

我在中学的时候,指针学的一般(黑厂老板没咋讲,出来背黑锅!  /狗头保命),上了大学发现还不熟练,临近期末考试,再不会不行了,所以认真的再研究一下子。

(这是黑厂的最后一个故事,该换世界观了,突然觉得时间过得好快)

我用一个比较形象的方法来解释吧。

int sum=16909060; 有个叫作sum的房子,里面有四个房间(VC 中int 为4个字节,char为1个,short为2个......),住着一个叫 16909060 的家庭 ,这个家庭有 0x01 02 03 04 四个人(16进制),01 02 03 04各自占据一个房间,它们这个世界叫做 windows or linux 世界,有一个法则,就是非常爱护后人,04 是小弟, 要住在第一个房间,01是大哥,要住在第四个房间。

有一天 16909060 家庭的几个人举办了个活动,邀请员工小C去它们家做客,给小C发来一张请帖,叫做int *p;(p就是这张请帖,这个请帖是 int * 格式的 。【int * 是自身的类型,int 是指向的类型】)p=∑(请贴上写着欢迎来到sum之家,门牌号是&sum)。请贴上写着门牌号和能进入的房间 (int代表能进入的房间为4个)。所能够访问的区域正好是 int (4) 形式的。这个小C拿到请帖之后,就有资格进入四个房间。靠门牌号找到sum之家,进去了以后见到了0x01020304,皆大欢喜。

插一段代码。 

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
	int sum=16909060;
	int *p=NULL;
	p=&sum;
	printf("%d",*p);
	return 0;
 }

当然有时候活动规模没那么大,short  *p=NULL;发了一个short 类型的请帖,小C只能进入第一、二个房间了。同理 char 只能进入第一个房间了。对于 char 来说,假如我要见 02 p+2就可以了(单位1是一个跨度)。printf("%u",p+2);

另给出套娃公式 &*p=&x  (*p=x)           *&x=*p=x (&x=p)  

读都读到这里了,做个题吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值