加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言:变量的使用范围

(2010-03-21 15:16:49)
标签:

it

分类: C
1)在有函数A、B
基中在A中定义了变量X,
然后在A中调用B函数(没有传递参数X给B),则在B函数体内,不能使用参数X
在自己函数体内定义的变量,不能在另外函数体内使用。
这是变量定义使用的范围在函数内使用!

2)       形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
3)      
允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。如在前例中,形参和实参的变量名都为n,是完全允许的。
4)      
在复合语句中也可定义变量,其作用域只在复合语句范围内
代码如下

main()

{

    int i=2,j=3,k;

    k=i+j;

    {

      int k=8;

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

    }

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

}


全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明

 

int a,b;         

    void f1()        

    {

      ……

    }

    float x,y;        

    int fz()         

    {

      ……

    }

    main()          

    {

      ……

    }

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//int s1,s2,s3;

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

{
        extern s1,s2,s3;

    int v;

    v=a*b*c;

    s1=a*b;

    s2=b*c;

    s3=a*c;

    return v;

}

main()

{
  extern s1,s2,s3;

 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);

}
int s1,s2,s3;


在外部文件使用全局变量s1,s2,s3

代码如下
//t_var.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//int s1,s2,s3;

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

{
        extern s1,s2,s3;

    int v;

    v=a*b*c;

    s1=a*b;

    s2=b*c;

    s3=a*c;

    return v;

}

int s1,s2,s3;
//v_var2.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main()

{
//外部变量申明
外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。
  extern s1,s2,s3;
    s1 = 2;
    s2 = 3;
    s3 = 4;
     printf("\ns1=%d,s2=%d,s3=%d\n",s1,s2,s3);
    return 0;
}

在borland 编译器输入命令
bcc32 t_var2.c t_var.c
就可以编译了







0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有