假设以下最小代码:
#include <stdio.h>
char character = 'c';
int main (void)
{
char character = 'b';
printf("The current value of head is %c", character);
}
我在 main
中覆盖了 character
,
那么 c
发生了什么?它会自动销毁还是永远存在于内存中?
这条评论让我印象深刻:“C 中的变量只不过是命名的内存块”。
最佳答案
“shadowing”全局 character
变量从 main
函数中隐藏变量,但它仍然是程序的一部分。
如果 character
变量被声明为 static
,那么编译器可能会警告 character
变量从未被使用并且 character
将被优化掉。
但是,character
变量没有声明为static
;编译器会假设 character
变量可能被外部访问,并将 character
变量保存在内存中。
编辑:
如@Deduplicator 所述,如果允许,链接器优化和设置可以从最终可执行文件中省略变量。但是,这是不会“自动”发生的边缘情况。
关于c - 当没有引用时,值会永远存在吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875241/