c - 当没有引用时,值会永远存在吗?

标签 c

假设以下最小代码:

#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/

相关文章:

C程序代码帮助

c - MKL : calling ? GBTRF

c - 尝试将双向链表的内容写入文件

c - 在 C 中使用 fgets 进行乘法运算

c - 如何将结构体数组传递给函数并在其中正确存储值?

c - 函数system()是否可以在线程中调用?

c - 忽略 C 中的非小写字符

c - 为什么 GCC 这样做 - 它是标准的 - 用另一个数组初始化数组成员?

C 在函数中动态分配二维数组并返回指针

c - 我不明白代码中 int 数组发生了什么