请考虑以下C函数。
是否打开大括号以创建局部范围使编译器在堆栈上创建记录以维护范围中声明的变量?堆栈上的本地范围记录
void function()
{
int q,r;
...
{
int i = 0;
int j = 3;
q = j + 1;
}
...
}
如果是这样,编译器采取同样用,而块?
例如:
void function()
{
int q,r;
...
while(conditions)
{
int i = 0;
int j = 3;
q = j + 1;
}
...
}
所以q,r和i,j可以在不同的记录上创建? – GionJh 2012-02-12 12:50:36
@ user986437'q','r'和'i','j'具有不同的词汇范围和不同的生存期。 – ouah 2012-02-12 12:53:23
请注意,while循环中的'i'和'j'在循环的每次迭代中都重新初始化。 – 2012-02-12 13:15:41