一:作用域的概念
通俗的讲是全局变量和局部变量的区别,对于在函数开头声明的自动变量(局部变量)来说,其作用域是声明该变量名的函数。不同函数中声明的具有相同名字的各个局部变量之间没有任何关系。
外部变量(全局变量)从声明它的地方开始,待其所在的文件的末尾结束。
1、对于定义的外部变量之前使用该变量的情况
例如:
main() {.....}
int sp=0;
double val[MAXVAL];
void push(double f) {.....}
double pop(void) {.....}
对于外部变量sp、val 函数push、pop来说,不需要任何声明就可以通过名字访问变量。但是对于main函数就需要对变量sp、val进行extern的强制声明。
2. 对于不同源文件对外部变量的使用情况
例如:
在文件file1中定义:
int sp=0;
double val[MAXVAL];
那么在文件file2中需要用强制关键字定义extern
extern int sp=0;
extern double val[MAXVAL];
void push(double f) {.....}
double pop(void) {.....}
3. 变量声明和变量定义的区别
变量声明用于说明变量的属性,而变量定义除了说明变量的属性外,还要分配内存空间。
对于int sp=0; double val[MAXVAL];是要分配内存空间地址的
对于extern int sp=0; extern double val[MAXVAL];仅仅声明不分配内存空间地址的。