我是 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?
\n\n是这种情况还是“a”被存储为内存地址的变量名
\n
&a是一个指向保留的内存的指针a。不涉及名称\xe2\x80\x9ca\xe2\x80\x9d。
\n\n...初始化为0
\n
默认情况下,自动对象不会被初始化。函数内部声明的任何对象,不带static、extern或_Thread_local对象都具有自动存储持续时间。
未初始化对象的值是不确定的,这意味着它没有固定的值;它的行为可能就像每次使用时都有不同的值一样。(如果显式初始化自动对象的任何部分,例如数组的一个元素或结构的一个成员,则整个对象将被初始化,数字类型默认为零,指针类型默认为空指针。)
\n