-----------------------作用域-----------------------
指一个对象起作用的范围
C语言程序中可以包含多个.c文件,这些文件一起组成一个工程文件
作用域:
1. 整个工程作用域:在整个工程中起到作用
2. 本文本作用域,在这个文本(.c / .h)文件起到作用
3. 函数作用域/代码块作用域:在{ }之内起到作用
1.)变量的作用域
a)全局变量:作用域在整个工程
定义在函数外面的变量
在1.c中 int a = 5;
在2.c中使用,需要声明外部变量
extern int a;
b)局部变量:定义在{ }之内的变量作用域是仅在{ }中
{
if(1)
{
int a = 5;
a = 1024;
}
printf("%d",a); //error 报错,a未定义
}
c)static 关键字修饰的全局变量
在其他.c 文件中即使是声明了 也无法使用
2.函数的作用域
a)整个工程文件
与变量相同,其他.c文件需要声明
extern int sum(int a , int b);
b)仅在本文本,使用static修饰
3.类型的作用域
a) 本文本中可用,其他的需要重新定义
1.c
struct test
{
int a;
int b;
};
2.c
如果在2.c要用到这个结构体,则必须在2.c里面