請考慮以下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