翁恺 9取地址运算

1. scanf("%d", &i); 里的 &

scanf 的功能是 "把用户输入的内容存到变量里",但它需要知道 **"变量存在哪个柜子里"**(即地址),才能把内容放进去。

  • 如果写 scanf("%d", i); → 传给scanf的是 "i 柜子里的东西(变量值)",不是柜子编号,scanf不知道该把输入的内容放到哪个柜子,会出错;
  • scanf("%d", &i);&i 是 "获取 i 的柜子编号(地址)",把这个编号传给scanfscanf就能精准地把用户输入的数放进 i 对应的柜子里。

2. printf("%x", &i); 里的 &

printf 这里用 %x 是 "以十六进制格式打印内容",而 &i 是 "获取 i 的柜子编号(地址)",所以这句话的作用是 **"打印变量 i 在内存中的地址(编号)"**。

3.printf("%p", &i);的作用

  • %p是 C 语言中 ** 专门用于打印内存地址(指针)** 的格式符,它会将&i获取到的变量i的地址,按照系统默认的地址格式(通常是十六进制形式,部分系统会自动添加0x前缀)输出。
  • 这是打印地址的规范写法 (比用%x更适配地址的特性,%x仅用于打印十六进制整数)

地址差4,因为int类型占4个字节,i、p相邻,i在高地址p在低地址

所以变量在内存按类型占用空间

相关推荐
qq_339554821 天前
英飞凌ModusToolbox环境搭建
c语言·eclipse
张張4081 天前
(域格)环境搭建和编译
c语言·开发语言·python·ai
༾冬瓜大侠༿1 天前
vector
c语言·开发语言·数据结构·c++·算法
独小乐1 天前
009.中断实践之实现按键测试|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·arm
Proxy_ZZ01 天前
从零实现LDPC比特翻转译码器:C语言实战与底层逻辑解析
c语言·算法
ambition202421 天前
斐波那契取模问题的深入分析:为什么提前取模是关键的
c语言·数据结构·c++·算法·图论
艾莉丝努力练剑1 天前
C++ 核心编程练习:从基础语法到递归、重载与宏定义
linux·运维·服务器·c语言·c++·学习
Ghost Face...1 天前
Linux USB 全栈解析:OTG + Type-C + PD 内核架构(架构师级)
linux·c语言·架构
蓝牙先生1 天前
22_backlightLinux内核模块
linux·c语言
ambition202421 天前
【算法详解】飞机降落问题:DFS剪枝解决调度问题
c语言·数据结构·c++·算法·深度优先·图搜索算法