scanf如何存储值?

bri*_*rit 0 c scanf

我是 C 新手。给出以下代码,

int main(void)
{
 int a;
 scanf("%d",&a);
 scanf("\n"); // consume trailing newline
}
Run Code Online (Sandbox Code Playgroud)

据我了解,第一个声明语句告诉编译器为标识符“a”初始化为 0(如“a==0”)的整数类型变量分配内存。Scanf 需要一个有效的内存地址来存储用户输入(比如 5),因此 &a 是“a”的内存地址,用户输入被存储为“a==5”。是这种情况还是“a”被存储为内存地址的变量名并且该地址的内容只是5?

Eri*_*hil 5

\n

是这种情况还是“a”被存储为内存地址的变量名

\n
\n

&a是一个指向保留的内存的指针a。不涉及名称\xe2\x80\x9ca\xe2\x80\x9d。

\n
\n

...初始化为0

\n
\n

默认情况下,自动对象不会被初始化。函数内部声明的任何对象,不带static、extern或_Thread_local对象都具有自动存储持续时间。

\n

未初始化对象的值是不确定的,这意味着它没有固定的值;它的行为可能就像每次使用时都有不同的值一样。(如果显式初始化自动对象的任何部分,例如数组的一个元素或结构的一个成员,则整个对象将被初始化,数字类型默认为零,指针类型默认为空指针。)

\n