简单不先于复杂,而是在复杂之后。
我们都知道,在程序的指导下,计算机可以做很多事情。而完成这些任务程序需要使用数据,即承载信息的数字和字符。
目录
- 有些数据类型在程序使用前已经设定好了,在整个程序的运行的过程中没有任何变化,这些称为常量。 简而言之,就是不能被改变的量。
- 其他数据类型在程序运行期间可能被改变或者赋值,称为变量。就是可以改变的量。
变量
首先,先对变量进行分类。变量分为局部变量和全局变量。
- 局部变量就是{ }内部定义的变量。
- 全局变量就是{ }外部定义的变量。
int a = 5;
int main()
{
int b = 10;
return 0;
}
以上的 a 就是全局变量,b 就是局部变量。
那么给变量命名的时候就会遇到问题,局部变量和全局变量的命名是否可以相同呢?
可以但不建议。
当局部变量和全局变量命名相同的时候,采取就近原则,局部变量优先。
虽然语法允许,还是不要给自己找麻烦的好,尽量不要把局部变量和全局变量写成一样的名字。
接下来认识一下变量的作用域和生命周期。
变量的作用域就是限制变量使用的范围。
- 局部变量的作用域是变量所在的局部范围。
- 全局变量的作用域就是整个工程。
超出变量的作用域范围变量是不可以使用的。
变量的生命周期
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期:整个程序的生命周期。
常量
- 字面常量
- const 修饰的常变量
- define 定义的标识符常量
- 枚举常量
- 27、3.24、'e'(字符)、"efvhbrebver"(字符串常量)等等,这些都是字面常量。
- 在C语言中,const修饰的常变量,本质是变量,不能直接修改,但是具有常属性。
#include<stdio.h>
int main()
{
int a = 10;
a = 20;
printf("%d\n",a);//结果20,a为变量
const int b = 10;
b = 20;//会报错,因为有常量属性,值不能改变。
const int n = 10;
int arr[n] = {0};//数组表达式中必须含有常量值,会报错。
return 0;
}
3.define定义的标识符常量
#define MAX = 100//定义一个符号MAX,值为100.
#include<stdio.h>
int main()
{
printf("%d\n",MAX);//打印结果为100
int a = 100;
printf("%d\n", a);//打印结果是100
return 0;
}
4.枚举常量
枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号隔开。
枚举常量的定义格式:
enum 枚举名
{
枚举名 = 值,
枚举名 = 值,
枚举名 = 值
···········
};
如果不赋值,值会默认从0开始递增。
如过想要从某个值开始递增,可以给第一个枚举值赋值,随之会从第一个枚举名赋值的常量开始递增。
enum Color//enum为枚举关键字,定义Color枚举类型
{
RED,
GREEN,
GLUE
}
int main()
{
//三原色可以一一列举
int num = 10;
enum Color c = RED;
//创建了一个Color类型的变量为c,赋值为RED,并在创建c的时候向内存申请了一块空间
//创建变量本质是向内存申请了一块空间,变量中要存储值
//常量只是个类型,没有去使用,只是一个符号而已,不会开辟空间。
//用常量的类型创建变量时会开辟空间
return 0;
}