局部变量
在代码块内定义的变量是局部变量,它具有临时性,在退出代码块时自动释放掉。(代码块:包含在{}内的代码就叫代码块。)
#include <stdio.h>
int main(){
int var=0;//局部变量
fun();
var++;
printf("%d",var);//var=1 局部变量var不会收到fun函数的var影响
return 0;
}
void fun(){
int var=20;//局部变量
printf("%d",var);//var在fun()函数结束时自动释放掉
}
全局变量
在所有函数外定义的变量是全局变量,全局变量默认初始值为0,全局变量在整个程序运行结束时自动释放掉。
#include <stdio.h>
int var;//全局变量var默认值为0
void fun();
int main(){
fun(); //var=20
var++;//var=21
printf("%d",var);//var=21 全局变量可以被所以函数调用
return 0;
}
void fun(){
var=20;
printf("%d",var);//var是全局变量在fun()函数结束时不会自动释放掉
}
//int var;
//如果在所有函数下定义全局函数 那将不会识别到变量var
//因为程序的执行从上往下执行,执行到main函数结束将会结束程序
局部变量的优先级高于全局变量。
#include <stdio.h>
int var=30;//全局变量
int main(){
int var=0;//局部变量
var++;//局部变量优先级高于全局变量,此时var++是局部变量var
printf("%d",var);//var=1
return 0;
}
复合变量
在代码块内复合使用的变量叫复合变量,复合变量在复合语言中生效,复合语言结束时自动释放掉。
#include <stdio.h>
int main(){
int i;
{
int i;//复合变量i在复合语言{}结束时自动释放掉
}
return 0;
}
变量的作用域
变量的作用域指变量的有效范围。
局部变量的作用域:只在它所在的代码块内有效。
全局变量的作用域:在整个程序的运行过程中有效。
#include <stdio.h>
int var;//全局变量var在整个程序的运行过程中有效
void fun();
int main(){
fun();//21
fun();//21var在fun()函数结束时会自动释放掉
var++;
printf("%d",var);//var=1 全局变量可以被所以函数调用
return 0;
}
void fun(){
int var=20;局部变量var在fun函数内有效
var++;
printf("%d",var);
}
变量的生命周期
变量的生命周期是指变量从定义到被释放掉的时时间。
局部变量的生命周期:程序运行至代码块到退出代码块为局部变量的生命周期。
全局变量的生命周期:程序运行至结束为全局变量的生命周期。