基础变量
int 整数类型
short 短整型
long 长整型
long long 长整型
float 单精度浮点型
double 多精度浮点型
long double 扩展精度浮点型
char ascii字符类型
char* 相当于字符串类型
bool 布尔类型
注意点:
1、long long 是 c++11 支持的特性
2、没有加 unsigned 的都是有符号数,加上为无符号数,区别是
最高字节的最高位是否代表符号位、以及能表示的范围
3、本质上类型表示的是一串地址空间的二进制串,不同类型只是
编译器对于二进制串的解析不同
3、字符串(char*)默认以 '\0' 结尾,使用 char* 需要手动
添加最后的结尾标识符 '\0'
4、char* 是指向一片字符空间的变量,所以 char* a 中的 a
是一个地址,访问里面的数据需要采用地址运算 [] 或者取地址
内容符 *,例如 a[0],*a,前者是取第一个空间的字符,后者
是从第一个空间开始,到碰到一个 '\0' 为止的串的整体
5、数组的地址空间是连续的,char*的地址空间也是连续的,
相当于一个字符数组
复杂变量
vector 向量
list 列表
map 地图,存放键值对
set 集合
string 字符串
queue 队列
priority_queue 优先队列
stack 栈
pair 键值对,一个结构体
struct 结构体
class 类
向量:相当于一个动态的数组,存放类型不限,存放长度不限,在其内部实现
的时候,如果大小不够,则会开辟一个双倍的空间,然后将数据拷贝过去
并释放原空间
列表:采用链式结构,是一种双向链表,存放类型不限
地图:存放键值对,其中的键不能重复,内部实现采用哈希散列函数的方式
集合:类似于数学里面的集合的概念,存放的数据不能重复,可以实现自动去重
字符串:相当于封装好了的char*,只不过string是一个类,封装了对于数据的
操作,而char*只是单纯的数据而已
队列:遵循先进先出的原则
优先队列:是一种可以自动排序的容器,有三个传入参数,分别是数据类型,存储
数据的容器,以及进行数据比较的结构体。
栈:遵循先进后出的原则
结构体:结构体包含数据和数据的操作两部分,如果不加入 private 等权限设定
关键字,那么默认的属性或者函数就是公有的,主学 c 的朋友有兴趣可以去
了解了解结构体在内存中的存储方式。
类:类也和结构体相似,包含数据和数据的操作两部分,如果不加 private 等权限
设定关键字,那么默认的属性或者是函数就是私有的,那么类在内存中是怎么
存储的呢?
类在内存中存储的时候,是将数据和代码分割开的,所有的类对象都共用一份
成员函数,这一份成员函数存储在代码区,当实例化一个类的实例的时候,由于
成员函数共享,所以实际上只是实例化了该实例所拥有的非静态成员变量,并将这个
变量存放到堆栈区,而静态变量则在编译器编译类的时候存放到了静态存储区,所以
平常所说的实例化,本质上只是产生一份非静态变量而已。
常量
字面值常量:
默认的常量都是十进制的,如果在常量前面加数字0,则变为八进制,如果
加0x,则变为十六进制,c++不存在二进制的数列串,要得到二进制只能对十进制
数进行位级别上的操作得到。
自定义常量:
常量在定义之后必须要有一个初始化值,并且在定义之后不可以进行修改,
定义常量有两种方式:
1、 const A = 0;
2、 #define A 0
第一种方式只需要放到使用之前即可,第二种方式需要放到和 #include
同一级的位置上,例如
#include <iostream>
#define A 0
using namespace std;
int main()
{
return 0;
}