变量
变量是什么?
字面意思:变化的量? 从字面上看就是一个会变化的量 定义创建一个变量即在内存中开辟一段空间,用来存放数据 。
如何定义变量?
int age = 18;
char? ch = 'a';
类型 变量名 = 默认值(创建变量时给变量里初始化的值)
小知识:标识符都可以作为变量名,但变量名的取名应尽可能有意义,比如 变量名age 表示年龄 读这段代码就能让人明白这个变量里面存的是年龄
为什么要有变量 ?
计算机是为了解决人计算能力不足的问题而诞生的。即,计算机是为了进行计算的。 而计算,就需要数据。 而要计算,任何一个时刻,不是所有的数据都要立马被计算。 如同:要吃饭,不是所有的饭菜都要立马被你吃掉。饭要一口一口吃,那么你还没有吃到的饭菜,就需要暂时放在盘子里。 这里的盘子,就如同变量,饭菜如同变量里面的数据。 换句话说,为何需要变量?因为有数据需要暂时被保存起来,等待后续处理。 那么,为什么吃饭要盘子?我想吃一口菜了,直接去锅里找不行吗?当然行,但是效率低。 因为我们吃饭的地方,和做饭的地方,是比较"远"的。 ?
变量定义的本质?
1.一个程序运行,需要加载到内存中 ?2.程序计算,会需要使用变量
那么,定义变量的本质:在内存中开辟一块空间,用来保存数据。
(为何一定是内存:因为定义变量,也是程序逻辑的一部分,程序已经被加载到内存) ?
?变量的作用域
作用域指该变量能被正常访问的代码区域
变量又分全局变量、局部变量
全局变量的作用域 :?
能被正常访问的代码区域为整个程序文件,严格来讲是定义这个全局变量到整个程序文件结束这个范围,光看文字不理解,现在上一段代码↓
#include <stdio.h>
int g_x = 100; //全局变量
void show()
{
printf("show: 全局: %d\n", g_x); //在任何代码块中都可以被访问
}
int main()
{
show();
printf("main: 全局: %d\n", g_x); //在任何代码块中都可以被访问,甚至被修改
return 0;
}
g_x为全局变量 ,在其下main 函数 和show函数 里都能对其访问 甚至被修改。
局部变量的作用域:
能被正常访问的代码区域在其所在的局部范围内,严格来讲是在这局部范围内定义这个变量开始到这个局部范围结束这个区间。老样子,上代码↓
#include <stdio.h>
int main()
{
int x = 10; //定义一个局部变量 x
if (x == 10)
{
int y = 20; // 定义一个局部变量 y
printf("局部: x: %d, y: %d\n", x, y);//y只能在本代码块内有效
}
printf("局部: x: %d, y: %d\n", x, y); //报错,y不能被访问
return 0;
}
x是一个局部变量 ,它所在的作用域 为 整个main函数里 ,y也为局部变量,但它的作用域为最里面的那个代码块里(代码块即为{ } 花括号括起来的区域) ,在y所在的代码块里可以打印x和y变量的内容,但在其代码块外只能打印x的内容而y会报错,因为在x代码块外 不能访问x变量。
小知识:
当在一个大的代码块里有一个小代码块 ,大代码块和小代码块里假设都定义了一个名字相同的变量但初始化的内容不同 程序是否能运行?? 代码如下↓
#include <stdio.h>
#include <windows.h>
int g_x = 100; //全局变量
int main()
{
int g_x = 10; //局部变量,与全局同名
printf("g_x:%d\n", g_x); //此时输出的结果是什么?
return 0;
}
首先,这样定义编译器不会报错,当出现这种情况,优先是最里面的代码块即 输出的
是所处的main函数局部范围内的g_x值,但强烈不建议这样干。
变量的生命周期
生命周期概念:指的是该变量从定义到被释放的时间范围,所谓的释放,指的是曾经开辟的空间”被释放“。 局部变量: 进入代码块,形成局部变量[开辟空间],退出代码块,"释放"局部变量 全局变量: 定义完成之后,程序运行的整个生命周期内,该变量一直都有效。
注意:作用域和生命周期看似都差不多,但两者是完全不同的概念。 ?
?
常量
什么是常量
常量是指在整个操作过程中其值保持不变的数据,通常在命令或程序中直接给出其值,用于计算或某种特定用途
常量的种类?
c语言中的常量分为以下几种:
字面常量:字面意思上的常量,即数字1 为数字常量? 字符 'a' 为字符常量 字符串 "abc"为字符串常量 。
const修饰的常变量:举一个例子 const int a =10;? ?此时a为创建的一个常变量 里面的值为10 且不可再被修改。
?
?#define定义的标识符常量??
?
即define 定义的标识符NUM 表达的含义可以替换为一个数字常量1
枚举常量
枚举常量为一一列举的常量 是一个自定义类型
这段代码定义了一个 名为color的枚举类型??enum color? 里面为 可能取值的枚举常量 red
green? blue? 它们都是固定的常量? 未初始化时第一个为0 后面的枚举常量值为上面的枚举常量加1
?
这次内容就更新到这里,时间不充裕有些内容未介绍全面,敬请见谅
小编知识储备不多,如有什么解释不周到或者错误的地方还请指出,必定虚心接受。
制作不易,给个一键三连吧~~
|