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

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

相关推荐
wuyk55536 分钟前
59.嵌入式C语言高级宏定义实战:多行宏、字符串化与符号拼接
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·51单片机
无相求码3 小时前
C程序的内存到底怎么分的?栈、堆、全局区一张图讲清楚
c语言
天空'之城3 小时前
C 语言工业级通用组件手写 08:精准软件消抖
c语言·嵌入式开发·工业级组件·软件消抖·按键防抖
Legendary_0085 小时前
LDR6500 设计指南:Type-C 音频快充二合一配件 PD 取电与插拔时序控制方案
c语言·开发语言·音视频
会飞的小新6 小时前
C 标准库之 <fenv.h> 详解与深度解析
c语言·开发语言·microsoft
爱刷碗的苏泓舒7 小时前
C 语言 if-else 与 switch-case 分支语句对比
c语言·开发语言
无相求码7 小时前
指针的5层境界,从入门到劝退:C语言指针进阶全解析
c语言
C++ 老炮儿的技术栈8 小时前
基于MFC+原生GDI手动自绘仪表盘控件
c语言·c++·visual studio·控件·工业控制·gdi·自绘
小肝一下8 小时前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
炸膛坦客17 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机