首页 > 解决方案 > 当我们将 scanf 中的值存储在变量中时,c 编译器如何找到值的地址?

问题描述

在 scanf("%d",&b); 假设我们将 5 存储在 b 变量中,因此 5 的地址将存储在 b 变量中而不是值 5 但是编译器如何找到 5 的地址以及为什么我们不能直接存储值 5?

标签: c

解决方案


这不是它的工作原理。通过使用"%d"格式说明符,该scanf函数假定参数是指向int. 所以它得到那个指针,使用解引用运算符,并将值存储在5指针指向的位置。

本质上,正在发生的事情是这样的:

int b;
int *pb = &b;  // Point to the variable b
*pb = 5;       // Dereference pointer and store value at that location

推荐阅读