数据区: 程序=算法+数据
数据:数据类型,数据存放在空间,
每一个数据都有作用域和生命周期
当生命周期与作用域同时存在时 才能引用变量;
作用域:能够被引用空间
作用域:不同作用域内可以定义相同名字的变量
当作用域不一样是 有限引用作用域小的变量。
代码块作用域
{代码块}
{
int a=99;
printf("%d\n",a);
}
函数作用域 比代码块作用域要大。
int main()
{
int a=10,b=5;
//int* a=&b;
for(b=0;b<2;b++)
{
int a=99;
printf("%d\n",a);
}
printf("%d\n",a);
}
文件作用域
局部变量: 在函数定义的变量(作用域在函数中)
在函数内定义 只在该函数内有效
函数开始调用时分配空间,函数结束释放空间
在复合语句内定义 ,只在复合语句中有效。
复合语句开始时分配空间,复合语句结束释放空间
全局变量: 定义在函数外 可以被文件中所有函数引用。
程序运行就分配空间 程序结束就释放空间
生命周期:存在的时间
动态区:函数开始调用时分配空间,函数结束释放空间
局部变量:
动态变量: auto 变量:
静态区:程序运行就分配空间 程序结束就释放空间
全局变量:
静态变量:
static
静态变量只能初始化一次。
程序运行就分配空间 程序结束就释放空间