C语言:作用域规则

本文最后更新于:2022年9月4日 下午

全局变量

  • 在整个程序生命周期内都是有效的
  • 在任意的函数内部能访问全局变量
  • 系统会自动对全局变量初始化
  • 保存在内存的全局存储区中,占用静态的存储单元
数据类型 初始化默认值
int 0
char ‘\0’
float 0
double 0
pointer NULL

局部变量

  • 在某个函数或块的内部声明的变量
  • 只能被该函数或该代码块内部的语句使用
  • 保存在栈中

作用域

  • 名字的作用域指的是程序中可以使用该名字的部分
  • 变量或函数的作用域从声明它的地方开始,到其所在的(待编译的)文件的末尾结束
  • 一个程序具有多个文件,一个变量只能在某个文件中定义一次,而其他文件可以通过extern声明来访问它

file1:

1
2
extern int sp;
extern double val[];//注意这里

file2:

1
2
int sp = 0;
double val[MAXVAL];

这样的话,sp和val可以在file1中使用

static关键字

  • 用 static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分
  • static 类型的内部变量是一种只能在某个特定函数中使用但一直占据存储空间的变量

在不进行显式初始化的情况下,外部变量和静态变量都将被初始化为 0,而自动变量和寄存器变量的初值则没有定义(即初值为无用的信息)


C语言:作用域规则
http://gls.show/p/b163e116/
作者
郭佳明
发布于
2022年9月4日
许可协议