初识c语言指针

指针

1.1内存

说到指针不得不先说一下内存。
在这里插入图片描述
比如说打开我们电脑的任务管理器就可以看到我们每个进程所占用的内存。程序就是在内存中运行的。
在这里插入图片描述

内存是一块比较大的空间,为了有效利用内存我们把内存划分成一个一个小的空间,我们称为内存单元,而每一个小空间都有自己的编号,我们称为内存地址。

在这里插入图片描述
在32位的电脑上,有32根地址线。通电则为1,不通电则为零0。产生的二进制序列可能性就有2^32种,每一种可能就对应一个内存单元。(单位是字节)
在这里插入图片描述
可以看出32位的电脑上管理内存的大小可以达到4gb;如今的64位电脑管理内存大小也是同样的方法算出来,这里就不列举了。
在c语言中,编号、地址、内存的关系在这里插入图片描述
在这里插入图片描述
int a 要给a分配4个字节的空间。但是取地址时读取的是4个字节中第一个字节的地址;(0x0012ff40)

那么如何证明取的是第一个地址呢?
在这里插入图片描述

查看a的内存地址发现打印的是4个字节中的第一个地址;
在这里插入图片描述
蓝色的部分是内存中存放a开辟的空间,灰色部分是指针变量pa开辟的空间。pa中存放的是a的地址,那么pa对a又有指向关系,可以通过pa中存放的地址找到a所在的内存空间从而获得a中存放的数据。

那么指针开辟出来的空间是多大呢?在这里插入图片描述
在这里插入图片描述

1.2指针的类型

以后,每遇到一个指针,都应该问问:这个指针的类型是什么?指针指的类型是什么?该指针指向了哪里?(重点注意)

1.3取地址与解引用

在这里插入图片描述
取地址操作:就是把a的地址取出来存放到指针变量pa中去
解引用操作:就是通过pa存放的地址找到pa所指向的对象

1.4指针为什么要存在?

在这里插入图片描述

我学c语言指针的时候也迷茫,知道指针可以操作变量。可是看到上面这段代码,我就不明白指针存在的意义?明明double d可以直接改,为什么要弄个指针去操作他这么麻烦呢?学校里举的例例子也是这种简单的,但是我不明白存在的意义。

那么既然c语言中有指针,那么肯定就有存在意义,我给大家举个例子。
在这里插入图片描述
我们写代码的时候不是只有在main()函数的里面写代码,完全有可能是脱离主函数去敲代码的。
站在test函数的视角上,传过去的是&d,test函数是不知道d这个东西的,那么它知道有个指针(也就是地址)呀,只能拿个指针变量来接收。那么这就是指针存在的意义之一。

如有错误欢迎指正
如有错误欢迎指正
如有错误欢迎指正

有帮助记得一键三连噢,蟹蟹
有帮助记得一键三连噢,蟹蟹
有帮助记得一键三连噢,蟹蟹

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熬夜退役选手337

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值