天天看點

C語言中static的使用

在開發過程中,我們經常會需要定義一些static類型的變量或者函數,我們接下來來具體聊一下static;

1、修飾變量

     當static來修飾一個變量時,就注定了這個變量的可見範圍和生命周期;

     (1)當修飾全局變量時

             static int flag1 = 0;

             int flag2 = 0;

             這兩個變量存儲在全局資料區,flag1隻在本檔案可見,其他檔案中不可見;flag2可在其他檔案中通過聲明extern int flag2來使用;

      (2)當修飾局部變量時

             void fun(void){

              static int temp1;

               int temp2 = 0;

               ......................

               return;

               }

              函數中,temp1為局部靜态變量,存儲在全局資料區,temp2為局部變量,存儲在棧上;但是随着函數的退出,temp2的生命周期也就結束,但是temp1依然有效,隻不       過可見範圍為本函數内,下次再次進入本函數時,對temp1的任何修改都是在上次修改的基礎上進行,也就是說temp1有記憶性。

2、修飾函數

     static修飾的函數主要是在本檔案中使用的函數,不對外提供,linux核心中的任何檔案中都有此類型的靜态函數;

     static inline void  enable_noirq(void){

      ................

      }

      使用static修飾函數的好處就是,所有檔案可以定義同名的函數,不用考慮重名導緻的編譯報錯;

繼續閱讀