笔记【数据类型,常量,变量】
1.数据类型
本质是向内存申请一块空间,存放数据
不同的数据所占内存空间的大小不一样,用字节表示
bit byte kb mb gb pb换算单位与数据量的换算一样
sizeof() -- %zu形式输出
2的10次方=1024
1bit可以存放1或0,所以1byte = 8bit,表示可以放2的8次方个数
2.变量常量
变量 - 局部变量 - 全局变量
局部变量- main函数括号内的变量【当然也包括在一些自定义函数空号内】
全局变量- main函数括号外的变量【当然也包括在一些自定义函数空号外】
局部变量和全局变量可以定义一样的变量名,但是在输出时优先使用局部变量
在同一个作用域下,不能创建两个相同的变量名
输入函数scanf(),在vs环境会报错,
用everthing - newc++file.cpp -找到对应位置,拷贝到桌面 -添加 #define _CRT_SECURE_NO_WARNINGS-替代原先路径下的.cpp文件
scanf()将用户输入的数据存放在创建好的变量开辟的内存空间中,所以需要用到取地址符号&
scanf("%d",&a);
局部函数作用域- 变量所在的局部范围
全局变量作用域- 整个工程
- 比如工程testdemo,下面创建了两个c文件,test1.c ,test2.c。那么全局变量int a的作用域就是testdemo整个范围
-
如果int a 只是在test1.c文件里,就单纯放在main函数括号外面,如果全局变量int a 放在test2.c文件,而test1.c文件想要使用,那么需要在test1.c文件中声明 extern int a ; 就可以使用在test2.c文件中的全局变量a
变量的作用域约等于变量的生命周期
局部变量的生命周期- 进入作用域开始生命周期,到出作用域生命周期结束
全局变量的生命周期- 整个工程的开始到结束
常量 - 不会变且不能改变的量 - 字面常量,const修饰的常变量,#define定义的标识符常量,枚举常量
字面常量 - 单纯的显示在屏幕上的量就是字面常量,它可以是数据类型的任何一种类型,比如整形,字符,字符串等
-如
5
'a'
"abc"
const修饰的常变量 - 本质上是变量,不过拥有了常量的属性,不能修改值了
-如
int a = 100; a = 200; - 结果200
const int a = 100 ; a = 200 - 结果报错,因为a只能是100,不能修改
-另外const 修饰的常变量如何去证明本质是变量,就用创建数组中的[ ],发现const修饰的常变量不能作为常量放入到[ ]中
#define定义的标识符常量 - 它可以定义多种数据类型的常量,比如字符,小数等 - 标识符 就是给它定义的常量起一个名称或是标记,在使用这个常量变的更加方便 - 在 main( )函数外面去定义
- 如
#define MAX 100
#define STR "abc"
枚举常量 - 将一些常量放在一个集合里,通常放入的常量都是一类的,所以才有枚举的概念 - 同样在main( )外定义好枚举常量,在main中使用这些枚举常量时,需要创建一个变量,用来引用这些枚举常量的值,而这个创建好的变量是不能改值的
-如
enum SEX
{
FEMALE, // 0
MALE //1
};
int main()
{
enum SEX a = FEMALE;
printf("%d",a);
};
-此外,还需要知道,枚举常量本质是整型,默认从 0 开始,所以输出要用%d输出
常量与变量的区别 - 值是否可以被修改
printf( ) - 需要引用头文件 - #include<stdio.h>