【C语言】深入理解指针(一)(中)

2、指针变量和解引用操作符(*)

(1)指针变量

我们通过取地址操作符(&)拿到的地址是一个数值,比如:0x006FFD70,这个数值有时候是需要存储起来,方便后期再使用的,此时我们将地址存放在指针变量中。

比如:

指针变量也是一种变量,这种变量是用来存储地址的,存放在指针变量中的值都理解为地址。

(2)如何拆解指针类型

上面的代码p的类型是int*,我们可以这样理解。

这里的p左边写的是:int**是在说明p是指针变量,而前面的int是在说明p指向的是整型(int)类型的对象。

例如:有下面一个float类型的变量ch,ch的地址,应该放在什么类型的指针变量中呢?答案是:float类型。

代码如下:

(3)解引用操作符

我们将地址存放保存起来,该如何使用呢?请看下面讲解。

举个生活中的例子:我们使用地址要找到一个房间,在房间里我们可以拿去或者存放物品。

在C语言中也是一样的,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址(指针)指向的对象。此时要用到解引用操作符(*)

代码举例:

*p的意思是通过p中存放的地址,找到指向的空间,*p其实就是a变量了;所以*p=500,这个操作就把a改成了500.

(3)指针变量的大小

【C语言】深入理解指针(一)(上)(上一篇博客)中,我们知道32位机器假设有32根地址总线,每根地址总线出来的电信号,转换成数字信号后是1或者是0,那我们把32根地址总线产生的二进制序列当做是一个地址,那么一个地址就是32个bit位,需要4个字节才能存储。

如果指针变量是用来存放地址的,那么指针变量的大小就得是4个字节的空间才可以。

同理,64位机器,假设有64根地址总线,一个地址就是64个二进制位组成的二进制序列,存储起来就需要8个字节的空间,指针变量的大小就是8个字节。

32位平台下:

64位平台下:

结论:
32位平台下地址是32个bit位,指针变量⼤⼩是4个字节
64位平台下地址是64个bit位,指针变量⼤⼩是8个字节
注意指针变量的⼤⼩和类型是⽆关的,只要指针类型的变量,在相同的平台下,⼤⼩都是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值