Static: ( 適合用在修飾 init 函數)

 

(1)   變數K是區域變數,當離開counter() 就會消失

 

//===================================

#include <stdio.h>

#include <stdlib.h>

 

void counter()

{  

    int k=0;

    k++;

    printf("i=%d\n",k);    

 }

 

 

int main(int argc, char *argv[])

{

   int i=0;

   for(i=0;i<5;i++)

   counter();

 

 system("PAUSE");

 return 0;

 

}

 

//===========================================

   2-1  

 

(2)   static 修飾區域變數k,會發現即使離開counter(),變數k的值並不會消失

 

//=============================================

#include <stdio.h>

#include <stdlib.h>

 

void counter()

{  

    static int k=0;

    k++;

    printf("i=%d\n",k);    

 }

 

 

int main(int argc, char *argv[])

{

   int i=0;

   for(i=0;i<5;i++)

   counter();

 

 system("PAUSE");

 return 0;

 

}

 

//=====================================

 

 

 2-2  

 

 

(3)

i設為全域變數,在另一個檔案(hello.c)中,將i的值列印出來,因為i為全域變數,所以不會被清為零。

 

//============================

#include <stdio.h>

#include <stdlib.h>

 

int i=0;

 

int main(int argc, char *argv[])

{

 

  int j=0; 

  for(j=0;j<5;j++) 

      counter();

 

  system("PAUSE");       

  return 0;

}

 

//-------------------(hello.c)--------------------------------

extern i;

 

void counter()

 

   i++;

   printf("i=%d\n",i);

 }

 

//====================================

 

 2-3  

 

 

(4) 全域變數i static 修飾,會變成static int i , 只能在main.c中使用 ,當有程式很大時,為避免被其他檔案誤修改變數,

可以將全域變數宣告成static。

 

//======================================

#include <stdio.h>

#include <stdlib.h>

 

static int i=0;

 

int main(int argc, char *argv[])

{

 

  int j=0; 

  for(j=0;j<5;j++) 

      counter();

 

  system("PAUSE");       

  return 0;

}

//------------------(hello.c)-----------------------------------------------

extern i;

 

void counter()

 

   i++;

   printf("i=%d\n",i);

 }

 

//======================================

 

 2-4  

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 matt 的頭像
    matt

    My的部落格

    matt 發表在 痞客邦 留言(0) 人氣()