当前位置:   article > 正文

搞懂全局变量、外部变量、静态全局变量的区别_静态全局变量和外部全局变量的区别

静态全局变量和外部全局变量的区别

搞懂全局变量、外部变量、静态全局变量的区别

全局变量

全局变量是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。

  1. 如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。
  2. 如果同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,全局变量被“屏蔽”, 即它不起作用。
  3. 如果写在文件的开头,可以省略extern。
  4. 在静态存储区分配存储空间
#include<stdio.h>
#include <process.h>
int a=5;//全局变量a,写在文件的开头,省略extern
void Print_a( )
{
	int a=10;//全局变量被屏蔽
	printf("%d\n",a);
}
int main(void)
{
	printf("%d\n",a);
	Print_a( );
	system("pause");
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

结果:
5
10

全局变量在整个程序中起作用,如果程序包含多个程序文件模块,可以通过外部声明,使得全局变量的作用范围扩展到其他模块,也可以通过定义静态全局变量,使其作用范围仅限制在这个模块

外部变量

全局变量只能被定义一次,如果其他模块要使用该全局变量,需要通过外部变量的声明。

外部变量声明格式: extern 变量名表;

只起说明作用,不分配存储单元,对应存储单元在全局变量定义时分配。

main.c

#include <stdio.h>
 
int count ;
extern void write_extern();
 
int main()
{
   count = 5;
   write_extern();
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void)
{
   printf("count is %d\n", count);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

静态全局变量

当程序只有一个文件模块,其与一般全局变量作用相同; 当程序有多个模块时,C语言静态全局变量的作用范围局限于该模块。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码架构师/article/detail/63295
推荐阅读
相关标签
  

闽ICP备14008679号