字体
第(4/6)页
关灯
   存书签 书架管理 返回目录
内经过说明的全局变量才能使用。全局变量的说明符为 extern。但在一个函数

    之前定义的全局变量,在该函数内使用可不再加以说明。

    例如:

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

    void f1()         /*函数 f1*/

    {

    ……

    }

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

    int fz()          /*函数 fz*/

    {

    ……

    }

    main()           /*主函数*/

    {

    ……

    }

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    从上例可以看出 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));

    }

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    如果同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变

    量被“屏蔽”,即它不起作用。

    8.9 变量的存储类别

    8.9.1 动态存储方式与静态动态存储方式

    前面已经介绍了,从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变

    量。

    从另一个角度,从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式

    
上一页 目录 下一页