Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我不能将赋值分解为两个不同的语句?_C_Pointers_Null_Initialization_Variable Assignment - Fatal编程技术网

C 为什么我不能将赋值分解为两个不同的语句?

C 为什么我不能将赋值分解为两个不同的语句?,c,pointers,null,initialization,variable-assignment,C,Pointers,Null,Initialization,Variable Assignment,当语句 sample.c:11:1: error: conflicting types for 'root' sample.c: 10:7 note: previous declaration of 'root' was here node *root; ^ 在main函数中声明 原因可能是什么?在第一种情况下 root = NULL; 是一个while声明。这在全局范围中是明确允许的 另一方面, node *root = NULL; 是一个声明,是一个,后者是一个要执

当语句

sample.c:11:1: error: conflicting types for 'root' 
sample.c: 10:7 note: previous declaration of 'root' was here 
node *root; 
      ^
main函数中声明

原因可能是什么?

在第一种情况下

root = NULL;
是一个while声明。这在全局范围中是明确允许的

另一方面,

 node *root = NULL;
是一个声明是一个,后者是一个要执行的语句,它必须在某个函数范围内。它不能位于全局范围内

因此,在您的情况下,
root
是一个全局变量,可以从
main()
完全访问,并且赋值语句在那里也是合法的。没有投诉。

在第一个案例中

root = NULL;
是一个while声明。这在全局范围中是明确允许的

另一方面,

 node *root = NULL;
是一个声明是一个,后者是一个要执行的语句,它必须在某个函数范围内。它不能位于全局范围内


因此,在您的情况下,
root
是一个全局变量,可以从
main()
完全访问,并且赋值语句在那里也是合法的。无需抱怨。

当变量不是初始化的一部分时,您不能只在函数外部赋值。请注意,所有全局变量都是零初始化的,没有必要像您那样将其重新初始化为零。您不能只在函数外部赋值变量,当它不是初始化的一部分时。请注意,所有全局变量都是零初始化的,没有必要像您这样将它们重新初始化为零。
node *root;
root = NULL;