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

指针和地址—C语言(快速了解指针,由浅至深)

了解什么是指针,什么是地址

先看一段代码:

uint32_t aa = 66; // aa 是普通变量,存储值 66 uint32_t *ptr = &aa; // ptr 是指针变量,存储 aa 的地址

uint和int区别:

uint32_t u = 66; // 范围: 0 到 4294967295(2*32-1)
int32_t i = 66; // 范围: -2147483648 到 2147483647

从int型讲起:

int aa = 66,我们定义了一个int型变量aa并赋值:在空间中造出一个箱子,并往其内部赋予66的值。那么既然在空间内,那么肯定有位置吧,这个位置就叫地址。

&aa就是地址的值,(可假设地址为020001),就像箱子上的标签,写有箱子在空间中所处的地址

这时我们可以定义个变量来存放地址,那什么变量可以存放地址呢,就叫指针变量(uint32_t *pt)

  • ptr 的类型是 uint32_t*(指针)
  • aa 的类型是uint32_t

到这我们就了解什么是指针什么是地址,以及他们的联系,看下面两个案例来加深理解

案例

一:

uint32_t aa = 66; // 调用1:显示变量aa的值(66的十六进制) OLED_ShowHexNum(2, 1, aa, 10); // 调用2:显示变量aa的内存地址 OLED_ShowHexNum(2, 1, (uint32_t)&aa, 10);

调用1结果:00000042(因为 66 的十六进制是 42)

调用2结果:20000668(假设 aa 存储在地址 0x20000668)

二:

uint32_t aa = 66; OLED_ShowHexNum(2, 1, aa, 10); OLED_ShowHexNum(2, 1, &aa, 10);

结果报错

解析:

(以上案例关于STM32单片机中OLED_ShowHexNum函数,但同样是使用C语言。所以指针关系并无差别)

Hex = Hexadecimal = 十六进制

void OLED_ShowHexNum(uint8_t x, uint8_t y, uint32_t num, uint8_t len);

uint32_t:占 32 位内存,范围 0 ~ 4294967295(2*32-1)

66 一>将十进制转换成十六进制是一>66 = 0x42(后面会出关于二进制,十进制,十六进制转换讲解)
所以 OLED 会显示类似:0000000042 (取决于你设定的显示长度);

&aa,这是一个 (指针类型)的值,这和函数期望的(unit_32t)的值不匹配,所以会报错。

只要把uint32_t*强制转换成uint32_t即可:

只要&aa前加上(unit_32t):(unit_32t)&aa
从而 OLED 显示的是:20000668

http://www.jsqmd.com/news/483979/

相关文章:

  • 在openSUSE-Leap-15.6-DVD-x86_64中使用gnome-builder-45.0的基本功能(三)空白Meson工程
  • 安装英文版Linux
  • CPC认证是什么?CPC认证是怎么收费的?
  • 三菱FX3U PLC 与昆仑通泰触摸屏控制松下伺服电机使用例程分享
  • 智阅—基于大模型API的文档智能总结系统
  • 拼多多2026届校招春招开始啦!
  • python微信小程序的学习资料分享系统
  • 满树的遍历--题解
  • 90天蜕变!我的大模型入门项目管理计划,保姆级教程免费送!一个普通人的90天学习路线图
  • 机器学习34:元学习(Meta Learning)
  • c++问题:free (): double free detected in tcache
  • 小程序毕业设计-基于微信小程序的在线学习在线课程系统的设计与实现
  • spring框架的主要几个依赖
  • 8:《死亡笔记》历史必然性:私人执法者在法律崩溃时的永恒规律(从罗马到现代义警)
  • 1949 AI:轻量化智能工具的应用优势与实践价值
  • 电力系统调频控制技术与仿真建模实践
  • 2026 年南宁物业律师口碑榜出炉,哪家强?
  • 用这个办法修复扬声器----------JAMO低音炮喇叭维修小记
  • 计算机毕业设计ssm小型养猪场信息化管理系统 基于SSM框架的小型养猪场智能化管理系统开发 SSM架构下的小型养猪场数字化管理平台设计
  • 冒泡,选择,插入排序再学习
  • iOS 上架 4.3a 被拒【uniapp专讲】​
  • linux——目录及文件操作
  • 经典的openclaw提示词注入
  • 【全网首家】·openclaw开发的GEO优化系统|小龙虾GEO系统|小龙虾专属GEO优化助理
  • vscode, wsl 使用claude code
  • 一套全方位零售数字化经营系统:技术解析与业务赋能
  • 对一些主流模型的结构解析(pt/onnx/openvino/gguf)
  • 三个F数,像空间F数,近轴工作F数以及工作F数
  • 拒绝上下文自残:用数据库硬刚 AI Agent 的健忘症
  • 设备预测性维护服务商选择的关键维度