A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

全局变量、外部变量、内部变量、局部变量,这些都是谁包含谁?都什么意思啊?还有,各自怎么定义,用extern? static?还是啥?

10 个回复

倒序浏览
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. }
复制代码
回复 使用道具 举报 1 0
图形结合 我竟无言以对
回复 使用道具 举报
*全局变量也称为外部变量,它是在函数外部定义的变量。
*局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该 函数后再使用这种变量是非法的。
*全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说 明。
*对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外 部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一次。 其一般形式为: [extern] 类型说明符 变量名,变量名... 其中方括号内的extern可以省去不 写。
回复 使用道具 举报
doushu 来自手机 中级黑马 2015-5-17 09:16:43
报纸
全局变量和局部变量
回复 使用道具 举报
没有什么包含不包含的,你看看C Primer  Plus好好的学习一下吧。。。。。
回复 使用道具 举报
全局变量和局部变量
回复 使用道具 举报
gamyc 中级黑马 2015-5-17 16:08:14
8#
大神威武,小弟学习了
回复 使用道具 举报
shao 中级黑马 2015-5-17 20:43:29
9#
学习下。。。。。
回复 使用道具 举报
。。2楼真是亮!
回复 使用道具 举报
分为内部变量和外部变量。内部变量是在函数或代码块内部定义的变量。反之就是外部变量,也称为全局变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马