来源:
func_1()
{
static int i = 10;
printf("%s : %d\n", __func__, i);
}
func_2()
{
static int i = 20;
printf("%s : %d\n", __func__, i);
}
main() {
static int i = 30;
func_1();
func_2();
printf("%s : %d\n", __func__, i);
}
输出:
func_1 : 10
func_2 : 20
main : 30
编译器如何根据函数区分数据段中的变量?
最佳答案
名称 i
只是每个函数作用域的局部名称,而每个这样的变量都存储在自己的区域中。编译器生成代码,以便从不同的内存地址加载它们中的每一个。
关于c - 静态变量的内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27312050/