1.变量的定义(只有一次)
(1) 什么是变量:
- 变量的本质就是要在内存的某个位置开辟空间,用来保存数据;
(2)变量定义举例说明:
- 变量的定义相当于对一个喜欢的人表白只能有一次。
(3)为什么变量都是在内存中开辟空间?
- 因为变量是在运行的时候才会被开辟空间的,而程序在运行之后会被加载的内存中;
- 换言之当你准备定义变量时,你的程序已经在内存中了,所有定义变量只能在内存中开辟空间。
定义变量的格式:类型 变量名 = 默认值 ;
int a,b;//定义变量
double d=3.14;//定义变量并初始化
char ch='a';//初始化
ch='d';//赋值->该变量已经存在,即该变量对应的空间已经被开辟,将字符d直接放到一个已经存在的空间中
(4)变量初始化与赋值的举例说明:
- 初始化就相当于富二代,一出生就是富人;
- 赋值就相当于一个普通人靠自己努力工作变成富人。
(5)为什么需要定义变量:
- 因为数据需要暂时被保存起来,等待后续处理;
- 数据本身是在硬盘当中,而能够处理数据的硬件为CPU,所以需要先将数据保存到内存中,但是将数据保存到内存中时一次会保存很多数据,而CPU处理数据时是一个一个的处理,这就意味着在内存中会有一部分空间是多余出来用来暂时保存数据的,所以需要定义变量来保存内存中那些临时的数据,便于后序处理。
2.变量的声明(可以声明多次)
告知某个变量已经定义好了,不用再重新分配空间;
变量声明的举例说明:
变量的声明相当于告诉自己的朋友自己有女朋友或男朋友了,可以告诉多个人。
3.局部变量与全局变量
- 局部变量、自动变量、临时变量统称为局部变量;
- 局部变量是在栈中存储,全局变量是在静态区中存储;
- 局部变量在程序运行之前没有被开辟空间;
在代码块内定义的变量叫局部变量,局部变量具有临时性,进入代码块自动形成局部变量,退出代码块释放局部变量。
#include<stdio.h>
int main()
{
int a = 10;
if (a == 10){
int b = 20;
printf("a:%d,b:%d\n", a, b);//b只在本代码块内有效
}
printf("a:%d,b:%d\n", a, b);//报错,b不能被访问
return 0;
}
在函数外定义的变量叫全局变量,定义完成之后程序运行的整个生命周期内该变量一直有效,程序结束释放全局变量;
#include<stdio.h>
int g_a = 100; //全局变量
void fun()
{
printf("fun:全局变量:%d\n", g_a);
}
int main()
{
fun();
printf("main:全局变量:%d\n", g_a);
return 0;
}
运行结果:
局部变量与全局变量命名相同时,优先使用局部变量,所有不建议将局部变量与全局变量定义相同的名字。
#include<stdio.h>
int g_a = 100; //全局变量
int main()
{
int g_a = 20; //局部变量与全局变量同名
printf("g_a:%d\n", g_a); //输出的是局部变
return 0;
}
运行结果:
生命周期:
- 该变量从定义到释放(开辟的空间被释放)的时间范围,是描述生存时间长短的问题。
作用域:
- 变量的有效区域,衡量影响范围的问题。
局部变量的作用域:
- 只在本代码块内有效,全局变量的作用域:整个程序运行期间都有效。
生命周期与作用域举例说明:
- 生命周期相当于一个人从生到死的时间范围;
- 作用域相当于这个人在某一个领域所做事情的影响范围。