全局變量

  • 2017-08-31
  • 28

西安網站建設 全局變量

全局變量也稱為外部變量,它是在函數外部定義的變量。它不屬於哪一個函數,它屬於一個源程序文件。其作用域是整個源程序。在函數中使用全局變量,一般應作全局變量說明。 隻有在函數內經過說明的全局變量才能使用。全局變量的說明符為extern。但在一個函數之前定義的全局變量,在該函數內使用可不再加以說明。

例如:

    int a,b;          /*外部變量*/

    void f1()         /*函數f1*/

    {

      ……

    }

    float x,y;        /*外部變量*/

    int fz()          /*函數fz*/

    {

      ……

    }

    main()           /*主函數*/

    {

      ……

    }

從上例可以看出a、b、x、y 都是在函數外部定義的外部變量,都是全局變量。但x,y 定義在函數f1之後,而在f1內又無對x,y的說明,所以它們在f1內無效。a,b定義在源程序最前麵,因此在f1,f2及main內不加說明也可使用。

【例8.13】輸入正方體的長寬高l,w,h。求體積及三個麵x*y,x*z,y*z的麵積。

int s1,s2,s3;

int vs( int a,int b,int c)

{

    int v;

    v=a*b*c;

    s1=a*b;

    s2=b*c;

    s3=a*c;

    return v;

}

main()

{

 int v,l,w,h;

 printf("\ninput length,width and height\n");

 scanf("%d%d%d",&l,&w,&h);

 v=vs(l,w,h);

 printf("\nv=%d,s1=%d,s2=%d,s3=%d\n",v,s1,s2,s3);

}

【例8.14】外部變量與局部變量同名。

int a=3,b=5;     /*a,b為外部變量*/

max(int a,int b) /*a,b為外部變量*/

{int c;

 c=a>b?a:b;

 return(c);

}

main()

{int a=8;

 printf("%d\n",max(a,b));

}

如果同一個源文件中,外部變量與局部變量同名,則在局部變量的作用範圍內,外部變量被“屏蔽”,即它不起作用。西安網站建設


全局變量——西安做網站-www.xgktgj.com