next up previous contents
Next: 範圍原則 Up: 變數與常數 Previous: 常數定義   Contents

儲存類別

  1. 儲存類別(storage classes):定義變數適用範圍。
  2. 儲存類別種類: auto, register, static, extern
  3. auto:只使用在 function 中的本地變數,以下兩行宣告,結果一樣,所以一般都會省略 auto 宣告。
    {
       int sum;
       auto int sum;
    }
    
  4. register:宣告變數存儲在 register 而不是 RAM,可以加快存取速度。
    {
       register int sum;
    }
    
  5. static:維持變數值存在於程式執行過程。
    #include <stdio.h>
     
    /* function declaration */
    void func(void);
     
    static int count = 5; /* global variable */
     
    main()
    {
       while(count--)
       {
          func();
       }
       return 0;
    }
    /* function definition */
    void func( void )
    {
       static int i = 5; /* local static variable */
       i++;
    
       printf("i is %d and count is %d\n", i, count);
    }
    
  6. extern:宣告變數為全域變數,也就是程式中的任何檔案都看得到這個變數。
    First File: main.c
    #include <stdio.h>
     
    int count ;
    extern void write_extern();
     
    main()
    {
       count = 5;
       write_extern();
    }
    
    Second File: support.c
    #include <stdio.h>
     
    void write_extern(void)
    {
       extern int count;
       printf("count is %d\n", count);
    }
    
  7. 編譯
    $gcc main.c support.c
    



2015-01-16