C语言-指针初探

指针变量的定义和初始化

C语言之所以是面向底层开发的低级语言,就是因为经常和内存打交道

指针说白了就是地址

比如变量a存放的地址0x406044

这个地址就叫指针

0x406044看起来很复杂,但实际上它也是个数值,只不过是十六进制的

既然你是个数值,那我就能用变量保存啊

于是我们如果把这个地址保存到变量b里

那么变量b就被称为指针变量

简单来说,保存了地址值,也就是保存了指针,那么理所当然叫做指针变量

就像我们把保存了整型数值的变量叫做整型变量一样

那如何用代码描述指针变量呢?

我们已经学习过,&a是取出变量a的地址,然后将其赋值给变量b

这里的 int* 依旧是一种数据类型,它表示指针变量存放着整型的数值

如果依然觉得抽象,可以这样理解

你住在某个房间,房间就是内存单元,你就是里面存放的数据,门牌号就是房间的地址

通过你的门牌号就可以找到你,你的朋友知道你的地址,只要有人问你朋友关于你的地址,就一定可以通过他来找到你,相当于你的朋友那里存放了你的地址(指针)

上面就是指针的定义和初始化,如果不对指针进行初始化,那么编译器不知道它应该存放哪一块内存单元的地址,所以最好养成初始化的好习惯。

*解引用

引用其实就是地址

* 和 & 实际上是一组相反操作性质的符号

&是取地址,而*是取出地址所存放的数据

因此,对于上面的指针变量b,如何取出指针变量b存放的数值呢

使用*即可取出指针变量b所保存的地址处存放的数值0

注意如果想打印指针变量b存放的地址,则用%p打印

提升一点理解,套娃行为

int a = 1;

int* b = &a;

int** c = &b;

这里c就被称为指向指针变量的指针变量,简称为指向指针的指针

理一下:变量a存放数据1,指针变量存放变量a的地址,指针变量c存放了指针变量b的地址

所以要解c的引用应该:**c

通俗理解:

问C关于A在哪里得知要先去问B,去B那里得知A在哪里,最后去A处找到A

指针的类型

并不只是int*型,也可以是char*,float*等等

取决于指针处的数据类型是什么

指针类型的大小

指针类型的大小并不是各自保存的数据类型的大小

因为指针类型实际上是地址,32位的电脑实际上是4字节,那么表示一个地址则是4字节大小

那么sizeof(int*)、sizeod(double*)......的大小都是4字节

64位的同理都应该是8字节

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值