变量作用域的分类
在一个程序中,我们往往会定义很多的变量,形式参数等,但是我们定义这些变量的生命周期,也就是它能在哪些时候被我们所用,它在什么时候会被释放掉等,可能也会在不经意之间产生错误,因为我们的C语言在书写的时候,有时候并不会像java等IDE一样,会提示我们的作用域,会为我们直接在编译前让我们强制的进行转换。
作用领域分类:
- 文件作用域
- 函数作用域
- 代码块作用域
- 函数原型作用域
文件作用领域:
从定义的位置开始一直到整个程序执行结束都是有效的,称为全部变量
函数作用域
函数内部声明定义的变量,称为局部变量
代码块作用域
有时候我们会在函数内部使用{}来进行局部操作,那么这个时候在{}内定义的变量,只能在代码块内部执行
函数原型作用领域
C语言或者C++都是要对定义的函数进行声明的,如int swap(int a,int b);那么这个时候所定义出来的变量其实它的作用范围仅仅是在声明时候。
下面以代码的形式形象的介绍下作用域区别:
#include<stdio.h>
#include<stdlib.h>
int student_num = 20;//全局变量,作用领域为整个程序
void export_student(int num);//函数原型作用领域
int main(void){
printf("this class has %d students!!\n",student_num);
export_student(student_num);
return 0;
}
void export_student(int num){
int i;//函数内部的局部变量,作用范围为函数内部
for(i = 0; i <= num;i++){
int numth = i;//函数内部的代码块变量,作用域为代码块中
printf("this is the %dth student\n",numth);
}
}
这是很简单的一个程序,但是已经把几种作用域都表现了出来