C语言:初识指针

1.什么是指针

内存单元的编号 == 地址 == 指针

计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那这些内存空间如何⾼效的管理呢? 其实是把内存划分为⼀个个的内存单元,每个内存单元的⼤⼩取1个字节。

计算机中的单位有bit(比特)、byte(字节)、KB、MB、GB、TB、PB。

⼀个⽐特位可以存储⼀个2进制的位1或者0。

每个内存单元,相当于⼀个学⽣宿舍,⼀个字节空间⾥⾯能放8个⽐特位,就好⽐同学们住 的⼋⼈间,每个⼈是⼀个⽐特位。

每个内存单元也都有⼀个编号(这个编号就相当 于宿舍房间的⻔牌号),有了这个内存单元的编 号,CPU就可以快速找到⼀个内存空间。 ⽣活中我们把⻔牌号也叫地址,在计算机中我们 把内存单元的编号也称为地址。C语⾔中给地址起 了新的名字叫:指针。

2.指针变量和地址

取地址操作符&:

指针变量也是⼀种变量,这种变量就是⽤来存放地址的,存放在指针变量中的值都会理解为地址

取出a的地址也就是&a,把它放在p中存储起来,p就是指针变量,类型是int*,p左边写着int*,*是在说明p是指针变量,int是在说明p指向的是整型(int) 类型的对象。

打开VS中的内存窗口,在地址中输入&a,就可以看到a的地址了,a是整形,占四个字节,所以方框中的就是a的地址,左侧是地址,右侧是对应的数值(十六进制),a是10,可以看到,每个字节有两个十六进制数,换成二进制就是八个,刚好对应8个比特位,而地址编号可以看到是连续的,而且相差为1.

再看指针变量的地址,也有四个字节,这是因为在x86环境下,如果在x64环境下,就是8个字节,指针的大小至于系统环境有关,x86下是4个字节,x64下是8个字节

指针变量大小总结:

• 32位平台下地址是32个bit位,指针变量⼤⼩是4个字节

• 64位平台下地址是64个bit位,指针变量⼤⼩是8个字节

• 注意指针变量的⼤⼩和类型是⽆关的,只要指针类型的变量,在相同的平台下,⼤⼩都是相同的。

可以看到打印出来的都是第一个地址,我们只要知道了第⼀个字节地址,就可以顺藤摸⽠访问到4个字节的数据。

解引用操作*:

我们将地址保存起来,未来是要使⽤的,那怎么使⽤呢? 在现实⽣活中,我们使⽤地址要找到⼀个房间,在房间⾥可以拿去或者存放物品。 C语⾔中其实也是⼀样的,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址(指针) 指向的对象,这⾥必须学习⼀个操作符叫解引⽤操作符(*)。

, *p 的意思就是通过p中存放的地址,找到指向的空间, *p其实就是a变量了。所以*p = 0,这个操作符是把a改成了0。通过解引用操作,对变量的修改就多了一种方式,写代码就会更加灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值