包括
static int i = 10;
int
main()
{
static int i = 20;
printf ( "i = %d\n", i );
return 0;
}
有两个静态变量,一个在全局范围内,一个在函数范围内。编译器不会抛出“多重定义”错误。 你能告诉我这两个静态变量存储在哪里吗?
最佳答案
这两个变量是分开存储的,因为它们是不同的——确保它们是分开的是编译器的问题。
变量都在程序启动之前初始化 - 这是 C,而不是 C++,其中的规则略有不同。
如图所示,在 main()
中,您无法访问全局变量 i
(同样,这是 C,而不是 C++)。
GCC 的 -Wshadow
编译器标志会警告您局部 i
遮蔽了全局。
关于c - 全局静态和局部静态在何时何地存储和初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474611/