目录
1、数据类型
类型的重要意义:决定了数据在内存中占用的空间,对数据的类型管理,可以高效利用内存空间。
类型基本分类:
1. 整形类型
char:unsigned char / signed char (char 根据编译器实现不同,一些会默认为char == signed char,另一些会被认为是 char == unsigned char,vs中为默认有符号的)
short:unsigned short / signed short == 在编译器可以省略为short
int:unsigned int / signed int == 在编译器可以省略为int
long:unsigned long/ signed long == 在编译器可以省略为long
long long:unsigned long long / signed long long == 在编译器可以省略为long long
2.浮点类型
float
double
3:构造类型(自定义类型)
数组类型:arr[ ]
结构体类型:struct
枚举类型:enum
联合类型:union
4.指针类型
int * pi
char * pch
float * pf
void * pv (空指针可以接受任何数据类型的指针,但不能直接拿来进行解引用操作或者对指针进行偏移,需要先将其强制类型转换为需要的数据类型再进行操作。eg: *(char *)pv
5.空类型
void 表示空类型,即无类型
通常用于三种情况
1.函数的返回类型 eg: void swap(int x, int y)
2.函数的参数类型 eg: int main(void)
3.指针类型 eg void * pv
2、整形在内存中的存储
整型类型的取值范围限定在 <limits.h>中查看
A 、存储形式
内存存储的最小单元是一个字节,即八个比特位。一个比特位存储0或1。
原码:即将数值按照二进制翻译过来。
反码:有符号位,符号位不变,其余按位取反即为反码。
补码:反码加1即为补码
由补码反推回原码有两种方式:
1.先补码减1得到反码,再除符号位外依次取反即得到原码。
2.与从原码到补码方法相同,补码先除符号位取反再加一得到原码
整形在内存中的存储都是以补码形式存储
B、存储顺序
因为整形中除了char类型是一个字节的大小,其他整形类型的大小都超过了一个字节,在内存中,比如int类型的四个字节是按照什么顺序在内存中由低地址到高地址依次存储的呢?
如果数据中的低位存储在内存中的低地址,高位存储于内存中的高地址,则是小段字节存储;