当前位置:网站首页>初识c语言指针
初识c语言指针
2022-08-02 14:02:00 【熬夜退役选手337】
指针
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这个东西的,那么它知道有个指针(也就是地址)呀,只能拿个指针变量来接收。那么这就是指针存在的意义之一。
如有错误欢迎指正
如有错误欢迎指正
如有错误欢迎指正
有帮助记得一键三连噢,蟹蟹
有帮助记得一键三连噢,蟹蟹
有帮助记得一键三连噢,蟹蟹
边栏推荐
猜你喜欢
What's wrong with running yolov5 (1) p, r, map are all 0
Unit 5 Hold Status
Deep learning framework pytorch rapid development and actual combat chapter4
8581 Linear linked list inversion
redis分布式锁和看门狗的实现
How to solve 1045 cannot log in to mysql server
[ROS](02)创建&编译ROS软件包Package
第五单元 保持状态
第十五单元 分页、过滤
跑跑yolov5吧
随机推荐
chapter7
Unit 11 Serializers
[ROS]roscd和cd的区别
Creating seven NiuYun Flask project complete and let cloud
如何自定义feign方法级别的超时时间
第十三单元 混入视图基类
Raft对比ZAB协议
第六单元 初识ORM
Unit 10 Continuous Tuning
MySQL数据库设计规范
鼠标右键菜单栏太长如何减少
Linux:CentOS 7 安装MySQL5.7
网页设计(新手入门)[通俗易懂]
瑞吉外卖笔记——第08讲读写分离
A little thought about password encryption
chapter7
The language of initial
drf路由组件Routers
深度学习框架pytorch快速开发与实战chapter3
第五单元 保持状态