函数体内部自定义变量,称为局部变量,存储于栈(stack)中,由编译器自动分配和释放,局部变量的生存期(或者说作用域)是当前函数内部,使用时必须初始化,否则其值将不定。以前对局部变量的定义也就是这么多,而且也就那么在用。近期碰到如下一个问题:
void func( void )
{
int x = 2;
switch ( x )
{
int m =0; //initialization skipped by case0,case1,case2,default
case 0 :
int i = 0; //initialization skipped by case1,case2,default
{ int j = 1; } // OK, initialized in enclosing block
break;
case 1 :
break;
case 2:
break;
default:
int k = 1; // OK, initialization not skipped
}
}
遇到这个问题,网上的解答很多,很多人觉得switch内不能定义局部变量,这个明显是不对的。因为我把代码改成以下形式后就完全可以用了。
计算机二级考试C语言辅导:由switch选择结构理解局部变量.doc
下载Word文档到电脑,方便收藏和打印[全文共424字]
编辑推荐:
下载Word文档