黑马程序员技术交流社区

标题: c语言中 ,变量按作用域分哪几种? [打印本页]

作者: gamyc    时间: 2015-5-16 21:48
标题: c语言中 ,变量按作用域分哪几种?
全局变量、外部变量、内部变量、局部变量,这些都是谁包含谁?都什么意思啊?还有,各自怎么定义,用extern? static?还是啥?
作者: 香草芭芙    时间: 2015-5-16 22:51
test00.c
  1. #include "test00.h"
  2. int b = 4;
  3. void test(int * a, int * b)
  4. {
  5.     *a = 10;
  6.     *b = 20;
  7. }
复制代码

main.c
  1. #include <stdio.h>
  2. #include "test00.h"
  3. #define TRUE 1

  4. int a; //全局变量

  5. extern int b; //外部变量 == 其他文件里的 全局 int b ;

  6. static int c = 5; //静态全局变量 (关于静态全局变量网上有个有意思的比喻)
  7. //  普通全局变量穿上static外衣后,它就变成了新娘,已心有所属,只能被定义它的源文件(新郎)中的变量或函数访问。

  8. int main(int argc, const char * argv[])
  9. {
  10.     if (TRUE)
  11.     {
  12.         int d = 0; //局部变量 == 内部变量
  13.         printf("d = %d , static int c = %d \n", d, c);
  14.     }

  15.     while (TRUE)
  16.     {
  17.         if (TRUE)
  18.         {
  19.             static int e = 0; //静态局部变量 : 内存中只有一份, 不会重复定义. 因此 e 是累加

  20.             printf("e = %d\t", e);

  21.             e++;

  22.             if (e == 10)
  23.             {
  24.                 printf("\n");
  25.                 break;
  26.             }
  27.         }
  28.     }
  29.    
  30.     printf("a = %d, b = %d , c = %d \n", a, b, c);

  31.     test(&a,&b);

  32.     printf("a = %d, b = %d , c = %d \n", a, b, c);

  33.     return 0;
  34. }
复制代码

作者: 梦初醉    时间: 2015-5-17 00:39
图形结合 我竟无言以对
作者: wangguanyang    时间: 2015-5-17 08:01
*全局变量也称为外部变量,它是在函数外部定义的变量。
*局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该 函数后再使用这种变量是非法的。
*全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说 明。
*对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外 部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一次。 其一般形式为: [extern] 类型说明符 变量名,变量名... 其中方括号内的extern可以省去不 写。
作者: doushu    时间: 2015-5-17 09:16
全局变量和局部变量
作者: 碧空海    时间: 2015-5-17 11:53
没有什么包含不包含的,你看看C Primer  Plus好好的学习一下吧。。。。。
作者: 卖女孩的小乌龟    时间: 2015-5-17 12:36
全局变量和局部变量
作者: gamyc    时间: 2015-5-17 16:08
大神威武,小弟学习了
作者: shao    时间: 2015-5-17 20:43
学习下。。。。。
作者: lyricdon    时间: 2015-5-17 21:37
。。2楼真是亮!
作者: kansiliyundi    时间: 2015-5-18 21:40
分为内部变量和外部变量。内部变量是在函数或代码块内部定义的变量。反之就是外部变量,也称为全局变量




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2