在C语言中,必须遵循先定义后使用的原则
例如
int a=10;
void main()
{
print("%d",a\n);
printf("%d\n"b);
int b=18;
}
当编译器编译时,按照由上到下的顺序编译,每遇到变量都会开辟空间存储,当编译到printf("%d\n"b);语句时,由于编译器顺序执行
编译器发现,还没有定义过变量b,就会出现编译时的错误;即使b变量的定义紧接着在该语句后面出现,这违反了先定义后使用的原则,、
也可以说,这就是对编译器的可见性;
c语言中,每个函数调用时候,都会在内存的栈中,分配给函数栈帧,而当函数调用结束时,编译时要释放该函数所处的栈帧,因为函数中定义的变量
是局部变量,只属于该函数,存放在该函数的栈帧中,随着栈帧的的释放,函数中定义的变量会被销毁,这就是所谓的生存期,生存期主要是对变量而言的
360

被折叠的 条评论
为什么被折叠?



