#include<stdio.h>
int i =0;
i=2;
int main(){
// some Code here
return 0;
}
错误: /Users/vaibhavkumar/Documents/C/primeFactors.c|4|错误:“i”的重新定义|
- 为什么在 C 中不允许重新定义变量。
- 全局变量存储在数据段(内存区域)中,与存储静态变量的位置相同。为什么可以重新声明静态变量?
最佳答案
那不是重新定义,而是赋值。
赋值与 C 中的初始化不同,并且不能在函数外完成 - 在那个上下文中没有执行线程,那么什么时候完成?
在这方面,具有 static
链接的变量与全局变量(具有 extern
链接)没有什么不同,但是静态链接变量是本地一个单独的编译单元,并且在外部不可见。如果您在不同的编译单元中声明两个同名的静态变量,它们是完全独立且不相关的变量——它们甚至不需要是同一类型。
请注意,静态链接 与静态存储 不同,但它们使用相同的关键字。所有全局和静态链接变量都隐式地具有静态存储类,但是声明为静态的函数局部变量具有静态存储类 - 即它始终存在 - 就像一个全局的,但只是本地可见。
关于c - 为什么不允许全局变量重定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702567/