1.0数据类型
1.0.0数据类型分类
【signed 有符号 有正负 unsigned 无符号 只有0和正整数】
ps int = signed int
char 默认由系统决定 signed char -取值范围: -128-127
unsigned char - 取值范围: 0-255
1.0.1内置类型(直接可以使用、自带)
(1)字符型( ' ' char )
(2)整型(描述整数 int 默认signed)
short [ int ] 短整型
int 整型
long [ int ] 长整型
long long [ int ] 长长整型
(3)浮点型(小数)
float 单精度浮点型
double 双精度浮点型
long double
(4)布尔类型(描述真和假 (bool) _Bool=true/false)
头文件 <stdbool.h>
1.0.2自定义数据类型
1.数组
2.结构体-struct
3.枚举-enum
4.联合体-union
1.0.1测量数据类型长度
1.计算机中常见单位
1024 = 2^10
bit -比特位 - 1个比特位存储一个二进制位(0/1)
Byte -字节- 1个Byte= 8个bit
KB - 1KB =1024 Byte
MB - 1MB =1024 KB
GB - 1GB = 1024 MB
TB - 1TB =1024 GB
PB - 1PB = 1024 TB
······
2.常见数据类型所占存储空间
数据类型 \ 不同编译器 | 16位编译器 | 32位编译器 | 64位编译器 |
char | 1 Byte | ||
char* | 2 Byte | 4 Byte | 8 Byte |
short int | 2 Byte | ||
int | 2 Byte | 4 Byte | |
unsigned int | 2 Byte | 4 Byte | |
float | 4 Byte | ||
double | 8 Byte | ||
long | 4 Byte | 8 Byte | |
long long | 8 Byte | ||
unsigned long | 4 Byte | 8 Byte | |
.... | .... | ... | ... |
3.sizeof操作符
sizeof(类型) / sizeof 变量
ps:sizeof 里表达式不运算 == 此表达式不会影响程序结果
单位:字节
返回值:无符号数字
sizeof计算结果:size_t类型 - 只规定为无符号整数 无具体类型
2.0变量
2.0.0变量的创建
1.格式: 数据类型 变量名称
2.变量名称:变量名有意义 且只能是由字母 数字 下划线组成 不能数字开头
3.ppppps: 变量只是在该作用范围内使用
ppppps:变量切记要初始化!
int main()
{
int a=0;
char b='\0';
float c=0;
return 0;
}
2.0.1变量的分类
推测下列代码运行结果
#define PI 3.14 #define str "圆周率为" int main() { int a = 2; { int a = 3; printf("a1=%d\n", a); printf("%s %f\n",str,PI); } printf("a2=%d\n", a); return 0; }
运行结果
1.全局变量:在{ }外定义 整个工程中都可以使用
2.局部变量:在{ }内定义
pppppps : 局部变量与全局变量名称相同时 局部优先
eg. 上述代码中的 变量a
3.内存分类
(1)栈区 :局部变量 形式参数 函数栈帧空间
(2)堆区 :动态内存管理 ( malloc calloc realloc free)
(3)静态区:全局变量 静态变量
名 词 解 释
栈 :
是一种数据结构 只能在一端进行插入和删除操作 (按先进后出的原则存储数据)
压 栈 (push):在栈中存放数据从低到高 我理解为函数递归中的递推过程
高地址
出 栈 (pop):拿出栈中的数据 我理解为函数递归中的回归过程
栈 帧 :
1.每个未运行完的函数都有一个对应的栈帧
2.栈帧保存了函数的返回地址和局部变量