區塊範例

下列程式顯示資料物件值在巢狀區塊中的變更方式:

 /**
  ** This example shows how data objects change in nested blocks.
  **/
   #include <stdio.h>

   int main(void)
   {
      int x = 1;                     /* Initialize x to 1  */
      int y = 3;

      if (y > 0)
      {
         int x = 2;                  /* Initialize x to 2  */
         printf("second x = %4d\n", x);
      }
      printf("first  x = %4d\n", x);

      return(0);
   }
程式會產生下列輸出:
second x =    2
first  x =    1

名稱為 x 的兩個變數定義在 main中。 當 main 執行時, x 的第一個定義會保留儲存體。 不過,因為 x 的第二個定義出現在巢狀區塊內,所以 printf("second x = %4d\n", x); 會將 x 辨識為前一行所定義的變數。 因為 printf("first x = %4d\n", x); 不是巢狀區塊的一部分,所以 x 會辨識為 x的第一個定義。