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

C++038(指针)

1.指针

1.1变量 地址与指针

要想弄明白什么是指针,就必须弄清楚数据在内存中是如何被存储的,又是如何被读取的。

通常来说,系统会按字节对每个内存单元进行编号,这些内存单元就好比是许多带有编号的小房间,要想使用内存,就需要知道房间编号。

假设我们定义了一个整型变量i,编译器会为其分配4个字节——编号为4001~4004的存储单元,在这里插入图片描述

接下来我们又定义了一个整型变量j,则j在内存中的起始地址是4005,同样占4个字节,即编号4005~4008的内存单元中保存的是j。

在这里插入图片描述

  • 可见,编译系统会为每个变量都分配了一个能满足其类型大小的内存单元地址,访问该地址就能找到对应变量。
  • 汇编语言中直接通过地址访问内存单元,C、C++、Java等高级语言中通过变量名访问对应内存单元,得到其中保存的变量值
  • 这是因为代码经过编译后,会将变量名转换为该变量在内存中的存放地址
  • 例如,语句“i+j;”的计算过程如下:
  • 根据变量名与地址的对应关系,找到变量i的地址4001,从4001开始读取4个字节数据放到CPU寄存器中,再找到变量j的地址4005,从4005开始读取4个字节的数据放到CPU另一个寄存器中,
  • 最后通过CPU的加法中断计算得出结果。
  • 既然通过地址可以访问指定的内存单元,因此可以说该地址“指向”该内存单元。为了好记忆,我们将变量的地址形象化地称为该变量的“指针”,意思是通过它能找到对应的内存单元。

1.2 指针变量

  • 一个变量的地址称为该变量的指针<
http://www.lqws.cn/news/509095.html

相关文章:

  • ci | cd
  • OpenHarmony如何获取app_signature证书指纹
  • jenkinsfile调用groovy
  • 如何为虚拟机上的 Manjaro Linux启用 VMware 拖放功能
  • API测试工具Parasoft SOAtest:应对API变化,优化测试执行
  • 简单项目 esp8266 红外接收 2025年6月24日21:35:32
  • JavaScript 存储对象 sessionStorage (会话存储) 和 localStorage(本地存储)
  • 正点原子——直流无刷电机-霍尔传感基本实现流程
  • WEB安全--Java安全--jsp webshell免杀1
  • leetcode114-二叉树展开为链表
  • 人机交互动画制作新突破!文本驱动扩散框架HOIDiNi:一句话驱动虚拟人高精度操作物体。
  • 美团小程序闪购 mtgsig1.2
  • 关于 Babel 编译后的 Generator 状态机结构解析
  • 读取ILA数据进行MATLAB分析
  • 软件行业如何权衡“统一规范“与“灵活创新“?
  • Vue.js 列表过滤实现详解(watch和computed实现)
  • PYTHON从入门到实践4-数据类型
  • 原子操作(CAS)
  • OSS跨区域复制灾备方案:华东1到华南1的数据同步与故障切换演练
  • 嵌入式开发学习日志Day8(ARM体系架构——按键、蜂鸣器及中断)
  • 【bug】searchxng搜索报错Searx API returned an error
  • Vue项目使用defer优化页面白屏,性能优化提升,秒加载!!!
  • java-SpringBoot框架开发计算器网页端编程练习项目【web版】
  • QT多线程
  • Git 子模块 (Submodule) 完全使用指南
  • 烟花爆竹生产企业库房存储安全风险预警系统
  • 【Pandas】pandas DataFrame update
  • 【Docker基础】Docker容器管理:docker stop详解
  • Vue.js:渐进式框架赋能现代Web开发
  • 蓝桥杯嵌入式学习(cubemxkeil5)