指针当你设置一个变量时int a10//本质上是一块内存a便是取这块内存也就是取地址。int a 10;int* p a;定义一个int类型的指针去指向a的地址。可以理解为指针是存储地址的变量因此指针本身也有地址。a 10地址: 0x100p 0x100地址: 0x200只要不是创建新指针*p表示的意思是解指针也叫解引用解指针得到的是所指向的内容例如cout *p;//输出的是10指针的第二个作用是间接访问。*p 20;实际上修改的是a20。指针的用处1函数修改外部变量不用指针时void change(int x){x 100;}这里如果传进来a只是拷贝版而原版a留在外面在这个函数里修改了拷贝版对原版没有影响。若是不小心使用了指针void change(int* p){ *p 100;}那么传进来的就是a的地址可以直接对原版产生影响。const与指针当*在const之后时。值固定指向不固定。当*在const之前时。值不固定指向固定。const int* const p a;//均不能改引用引用是变量的别名创建方法int a 10;int r a;这里a和r是同一个东西。引用一定要初始化且不可重新绑定毕竟第一次最重要补充一句引用的空值风险比指针小很多const与引用const int r a;此乃只读引用相当重要。它就有方便安全的特性且与普通引用不一样的地方在于不可通过r修改a可以绑定右值没有持久地址通常是临时的、即将被销毁的值只能出现在赋值运算符的右侧。例如void print(const string s)可以避免拷贝提高效率。野指针未初始化指针危险指向已释放内存危险空指针空指针本身不危险危险的是解引用空指针