c - 当我们将 scanf 中的值存储在变量中时,c 编译器如何找到值的地址?
问题描述
在 scanf("%d",&b); 假设我们将 5 存储在 b 变量中,因此 5 的地址将存储在 b 变量中而不是值 5 但是编译器如何找到 5 的地址以及为什么我们不能直接存储值 5?
解决方案
这不是它的工作原理。通过使用"%d"
格式说明符,该scanf
函数假定参数是指向int
. 所以它得到那个指针,使用解引用运算符,并将值存储在5
指针指向的位置。
本质上,正在发生的事情是这样的:
int b;
int *pb = &b; // Point to the variable b
*pb = 5; // Dereference pointer and store value at that location
推荐阅读
- android - 在具有相同分辨率和相同 ppi 的不同制造商设备中,图标和内容显示不相似
- reactjs - 如何在reactjs中对存储在上下文api中的数据执行搜索?
- reactjs - 从 FlatList 中删除项目失败,并显示“TypeError: (0, _activities.default) is not a function”
- linux - crontab 不会执行 shell 脚本
- assembly - 当前指令旁边的 RIP 相关加载会发生什么?缓存命中?
- r - 如何将轴线更改为箭头
- javascript - 如何计算有多少
- 项目在一个
- 带有条件的标签
- 项目在一个
- php - 在卡片 wordpress 中显示页面
- android - 通过 USB 或网络从 Android 向 PC 发送键盘命令(无需修改内核)
- vba - VBA 替换字符串给出日期