全局变量的存储类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23274715/article/details/75208473

全局变量的存储类型
在函数外部定义的变量是全局变量,它的作用域是从变量的定义点开始,到本程序文件的末尾。全局变量分为两种:1.extern声明的变量 2.static声明的变量。 当未对全局变量指定存储类别时,隐含为extern类别。用extern和static声明的全局变量都是静态存储方式(存放在静态存储区),都是在编译时分配内存的。


1.extern声明的全局变量
用extern声明的全局变量,可以扩展到全局变量的作用域。如果全局变量不是在文件的开头定义,其有效作用范围时从变量的定义点到程序文件的结束。如果在定义 点之前的函数想用该全局变量,则应该再引用之前用关键字extern对该变量做“外部变量声明”,表示该变量是一个已经定义的全局变量。这样就可以从声明处起合法的使用该全局变量。例:

#include <stdio.h>
    void fun(void)
    {
        extern int x,y;
        Int a= 15,b=10;
        x += a + b;
        y += a - b;
    }
    int x,y;
    void main(void)
    {
        Int a= 8,b=5;
        x = a + b;
        y = a - b;
        fun();
        printf("%d,%d",x,y);
    }

    result:   38,8
如果在一个程序包含两个文件,在两个文件中都要用到同一个全局变量Flag,不能分别在两个文件中各自定义一个全局变量Flag,否则在进行程序连接时会出现“重复定义”的错误。正确的做法是:在任意一个文件中定义全局变量Flag,而在另一个文件中通过语句“extern Flag;”来声明。这样就可以正常使用了。
  1. static声明的全局变量
    当程序设计时某些全局变量只限于被本文件使用,而不能被其他文件使用,这是就可以在定义全局变量时加static声明。
#include <stdio,h>
    static int A;
    void fun(void)
    {
        …………
    }

猜你喜欢

转载自blog.csdn.net/qq_23274715/article/details/75208473