翁恺 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在低地址

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

相关推荐
小龙报23 分钟前
【优选算法】1.搜索插入位置 2.x的平方根
java·c语言·数据结构·c++·python·算法·蓝桥杯
SNAKEpc121382 小时前
OpenGL(十五)- 着色器语言GLSL
c语言·c++·线性代数·算法·矩阵·图形渲染·着色器
YSL0701244 小时前
字符函数和字符串函数
c语言
Aurorar0rua6 小时前
CS50 x 2024 Notes Memory - 03
c语言·开发语言·学习方法
捷瑞电子工坊16 小时前
嵌入式秋招面经:5大核心模块高频考题与实战避坑总结
c语言·stm32·嵌入式工程师·rtos·通信协议·嵌入式面试
天空'之城18 小时前
C 语言工业级通用组件手写 30:安全内存拷贝组件
c语言·内存拷贝·工业级组件·安全内存操作
LuminousCPP19 小时前
数据结构-双向循环链表
c语言·数据结构·笔记·链表
小僧景贤1 天前
嵌入式C语言 第二篇:基础语法|嵌入式C与标准C的核心差异
c语言·开发语言·嵌入式c语言
wuyk5551 天前
1.栈:后进先出的线性数据结构
c语言·数据结构·stm32·单片机
LuminousCPP1 天前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode