指针学习注意点

昨天给一个学生讲解指针的问题,发现指针中存在一些问题,为了让大家尽力避免这种情况,特此在这里稍作说明。

在我们的培训机构里啊,指针的课程大多是6-8个小时,可以说上时间很长,但是啊,正是由于时间过于长,在关注细节的同时,很容易忽略指针学习的主线。以谭浩强书为例来说明,什么是指针学习的主线。

指针学习主要是从p+1究竟加了几个元素来分,可以分成两大类,一是普通指针,一是两个特殊指针,分别是数组指针和函数指针,一般的指针“加1”都是加一个元素的长度,而数组指针加1加一行,函数指针不能进行加1操作(当然void *也不能进行“++”操作,但是毕竟void 指针比较好理解,就不单独列出来了)。为什么是“+1” 不是“++”呢,因为数组名不能进行”++“操作啊。这就是指针学习的主线,当学习指针的时候很容易迷失在众多 的细节当中而不能自拔,每当这个时候就需要需要想想这个分类方法,你会突然间感觉很轻松。

那么说说什么是指针呢?指针就是地址,地址就是指针。这一点必须时刻记在心里,这样能够减少你很多的脑力劳动。用VC6.0举个例子看看。

int main()
{
	int a = 3;
	return 0;
}
例子非常简单,那么看看内存图:

从图中可以看出,变量的首地址就是指向该变量的指针,刚开始学的时候如果这句话分不清楚,可以这样说,变量的指针就是变量的地址。


接着看一看如何去存储一个地址。一个地址就是一个字节,32的机器总共有(2^32-1)个这样的字节,也就是4G的地址空间。我们可以看出,指针变量实际上就是一个无符号整型的数字,那么用unsiged int 去存储怎么样呢,不好,因为这样编译器就分不出存放的是地址还是普通的数值了。那么为了解决这个问题,编译器采用了一个妥协的方法,就是专门声明一类变量来存放指针,这就是指针变量。指针变量有个最明显的特点就是只能存放


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值