按照一般教科书上的说法,C语言中的局部变量应该是分配在"栈"中的。而实际情况,有些出入录,肯能更容易理解。
这一段代码,唯一的用途,就是分配变量。int func1(void)
{
volatile int father;
volatile int mother;
volatile int boy;
volatile int girl;
father = 30;
mother = boy = girl = father;
return father;
}
int func2(void)
{
volatile int father;
volatile int mother;
volatile int boy;
volatile int girl;
volatile int unnecessary;
father = 30;
mother = boy = girl = father;
unnecessary = 0;
return father;
}
int func3(void)
{
volatile int stONe[2];
stone[0] = 30;
return stone[0];
}
int func4(void)
{
volatile int stone[2];
stone[0] = 30;
if(stone[0] == 30)
{
volatile int father;
father = 91;
}
else
{
volatile int mother;
mother = 90;
}
return stone[0];
}
int func5(void)
{
volatile int stone[2];
stone[0] = 30;
if(stone[0] == 30)
{
volatile int boy[2];
boy[0] = 91;
}
else
{
volatile int girl[2];
girl[0] = 90;
}
return stone[0];
}
int func10(int a, int b, int c, int d)
{
return a + b + c + d;
}
int func11(int a, int b, int c, int d)
{
volatile int father = a;
volatile int mother = b;
volatile int boy = c;
volatile int girl = d;
return father + mother + boy + girl;
}
typedef struct Home
{
int father;
int mother;
} THome;
int func12()
{
THome home;
home.father= 12;
home.mother = 12;
return home.father + home.mother;
}
typedef int uint32;
int func13()
{
uint32 home = 2;
home *= 2;
return home;
}
int main(void)
{
func1();
func2();
func3();
func4();
func5();