当前位置: 首页 > news >正文

c语言中指针深刻且简单的理解

        对于c/c++的初学者来说指针是一个容易出错的地方,这并不是指针困难,而是我们在学习时没有理解到位。(事实上我也体会了好久,今晚突然有一点顿悟,遂做此文让大家少走弯路)

        首先我要阐释一下c语言中的类型,所谓类型其实就是固定大小的一段空间。不同的类型有不同的大小,例如:int申请4字节空间,char申请一字节空间......

        指针类型也是一种类型,没有什么区别,所以指针也是申请一段固定大小的空间罢了。与一般类型的区别在于指针申请的这一固定大小的空间中存放的内容是一段内存地址。所以不同的指针类型申请出来的空间是多少呢?答案是显然的,稍加思考我们就知道既然存放的是内存地址,那么指针申请出来存放内存地址的空间就应该正好能存下所有的内存地址,也就是可以给所有的内存空间编号。例如:如果你的电脑是32位的,那么指针申请的空间就是4字节的。如果你的电脑是64位的,那么指针申请的空间就是8字节的。

        那么就又有一个问题,不同指针类型之间有什么区别?(注意,这一点是跟普通类型的区别所在,普通的int,char的区别是申请的空间不同。但是不同类型的指针申请的空间是相同的,所以他们的区别不在这)区别在于不同的指针类型指向的空间大小不同,注意是指向的空间大小不同。这一点对于初学者很难理解,初学者会认为指针指向的空间还有什么区别,不都一样吗?不不不,这就是最该时时刻刻带在脑中的概念,也是指针的精髓。不同的指针类型指向的空间是不同的,例如:int* 指向的空间是4字节的,char*的指针指向的空间是一字节的。这在解引用(*)时大有用处。你对int*的地址解引用得到的是地址后跟着的4字节的内容,你对char*的地址解引用得到的是地址后1字节的内容。

        总结:指针它不应该是一个针,而是指向一个范围,指向一段空间。我们应该这样理解指针:指针的大小跟机器本身有关,指针的内容为指向类型那么大的一段空间的首地址。读起来好拗口,我举几个例子:

int*:指向类型是int为四字节,所以就是:该指针的内容为某四字节空间的首地址。

*(int*):对int*解引用,就是一个空间为四字节的类型。

int**:指向类型是int*为八字节(默认为64为机器),所以就是:该指针的内容为某八字节空间的首地址。

void**:指向类型是void*为八字节(默认为64为机器),所以就是:该指针的内容为某八字节空间的首地址。

*(int**):对int**解引用,就是一个空间为八字节的类型。

反正提到指针一定想到指向空间大小,该大小为去掉一个*后类型的大小。

http://www.dtcms.com/a/268449.html

相关文章:

  • 【机器学习笔记Ⅰ】 8 多元梯度下降法
  • mysql的JDBC和连接池
  • 单片机总复习
  • 升级AGP(Android Gradle plugin)和gradle的版本可以提高kapt的执行速度吗
  • CentOS-6与CentOS-7的网络配置IP设置方式对比 笔记250706
  • RSTP 拓扑收敛机制
  • 【人工智能】AI Agent 技术与应用场景解析
  • 【机器学习笔记Ⅰ】9 特征缩放
  • 零基础 “入坑” Java--- 八、类和对象(一)
  • 【HarmonyOS】鸿蒙6 CodeGenie AI辅助编程工具详解
  • Vue2 重写了数组的 7 个变更方法(原理)
  • PanoSAM:使用 Meta Segment Anything 模型对全景图像中的点云数据进行无监督分割
  • 模型训练、部署遇到的问题
  • 鼓式制动器的设计+(说明书和CAD【6张】 - 副本➕降重
  • jenkins安装
  • contain:paint和overflow:hidden的区别
  • C++高频知识点(二)
  • 9. 【Vue实战--孢子记账--Web 版开发】-- 账户账本管理(二)
  • 2025.7.6总结
  • android 获取手机配对的蓝牙耳机的电量
  • Flutter 项目开启 UI 层级虚线(UI Guides)
  • 【C++】string类(二)相关接口介绍及其使用
  • 植物大战僵尸杂交重制版1.0,经典焕新,重燃策略塔防之火
  • Altium Designer使用入门(非精通)教程 第三章(PCB绘制)
  • 前端开发深度剖析:核心痛点、隐藏陷阱与系统解决方案
  • 【MySQL进阶】MySQL架构
  • 【HarmonyOS】鸿蒙应用开发Text控件常见错误
  • AI+Web3:从自动化工具到自主经济体的范式革命
  • 爬虫-协议基础
  • 1865.找出和为指定值得下标对