【发布时间】:2019-03-23 08:02:17
【问题描述】:
假设以下最小代码:
#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 中的变量只不过是命名的内存块”。
【问题讨论】:
-
这与您的问题没有直接关系,但我认为有一点值得指出。除了清理调用帧,C 不会为你做任何内存管理。即使你覆盖了一个全局变量,它之前的值也不会“自动销毁”(作为一个没有引用的对象),而是在原地被覆盖,因为 C 中的变量只不过是命名的内存块。
-
我太傻了,这就是我愿意问的问题,如果声明为全局,它将被覆盖。 @EliKorvigo
-
澄清一下,你知道写
char character = 'b';(阴影)和character = 'b';(重新分配)之间的区别吗? -
好点,我看了评论后很小心,重新分配是在原地覆盖它@Boann,我想我明白了,你明确指出概念重新分配和阴影的区别
-
C 价值观没有生命。
标签: c