計算機二級考試C語言輔導:由switch選擇結(jié)構(gòu)理解局部變量

字號:

函數(shù)體內(nèi)部自定義變量,稱為局部變量,存儲于棧(stack)中,由編譯器自動分配和釋放,局部變量的生存期(或者說作用域)是當前函數(shù)內(nèi)部,使用時必須初始化,否則其值將不定。以前對局部變量的定義也就是這么多,而且也就那么在用。近期碰到如下一個問題:
     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
    }
    }
    遇到這個問題,網(wǎng)上的解答很多,很多人覺得switch內(nèi)不能定義局部變量,這個明顯是不對的。因為我把代碼改成以下形式后就完全可以用了。