变量、常量
生活中的有些值是不变的(比如:圆周率,性别,身份证号码‘血型等)。
有些值是可变的(比如;年龄,体重,薪资)。
不变的值,c语言中用常量表示,变量值c语言中用变量来表示。
定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = 'w';
变量的分类
局部变量
全局变量
#include <stdio.h>
int global = 2019;//全局变量
int main()
{
int local = 2018;//局部变量
int global = 2020;//局部变量
printf("global = %d\n", global);
return 0;
}
在上面的代码中全局变量和局部变量重名的时候,局部变量优先使用。
变量的作用域和生命周期
作用域:局部变量的作用域是局部变量所在的局部范围,
全局变量的作用域是整个工程。
生命周期:局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束。
全局变量的生命周期是整个程序的生命周期。
常量
1.用const修饰的变量
被const修饰后其值不会再改变,并且定义的时候同时进行初始化。
2.#define定义的标识符常量
关键字static
static是用来修饰变量和函数的,
修饰局部变量-静态局部变量
修饰全局变量-静态全局变量
修饰函数-静态函数
修饰局部变量
#include <stdio.h>
void test()
{
int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for(i=0; i<10; i++)
{
test();
}
return 0;
}
没有用static修饰局部变量输出结果为10个1.
#include <stdio.h>
void test()
{
//static修饰局部变量
static int i = 0;
i++;
printf("%d ", i);
}
int main()
{
int i = 0;
for(i=0; i<10; i++)
{
test();
}
return 0;
}
用static修饰后输出结果为1~10.
1.static修饰局部变量后将局部变量的生命周期改变了
静态局部变量生命周期:进入函数创建,程序结束后才消失。
2.在用static修饰全局变量时将全局变量的作用域改变了,
静态全局变量作用域变为:仅在当前.c文件中,原来为整个工程中,可以用代码来验证。用static修饰全局变量后当你在其他.c文件中用到时就会出现错误。
总结
1.作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
2.变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
学完变量与常量后,对于局部变量和全局变量有更深刻的认识,不同作用域和生命周期会使得整个程序输出结果发生改变,非常神奇变量。