翁恺 9取地址运算

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

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

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

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

相关推荐
Navigator_Z8 小时前
LeetCode //C - 1288. Remove Covered Intervals
c语言·算法·leetcode
铅笔小新z10 小时前
【C语言】深入理解指针
c语言·开发语言
Aurorar0rua17 小时前
CS50 x 2024 Notes Data structures - 08
c语言·开发语言·学习方法
小米里的大麦17 小时前
19 C、C++ 操作 MySQL
c语言·c++·mysql
Logic10117 小时前
C语言/数据结构位运算题解:异或XOR找出套碗游戏中的“幸运碗“——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
番茄灭世神18 小时前
PN学堂GD32教程第12篇——SPI与Nor Flash
c语言·stm32·单片机·嵌入式·gd32·总线协议
苏辰澈18 小时前
C++独属于自己的变身:多态
c语言·开发语言·c++·visualstudio·编辑器
水饺编程18 小时前
第1章,[Win32 章节]:在 VS2019 里面安装 MSDN
c语言·c++·windows·visual studio
水饺编程19 小时前
第1章,[Win32 章节]:编程环境与 MSDN
c语言·c++·windows·visual studio
wuminyu1 天前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++