this指针:

指向实例化对象本身,存储对象的地址,通过该地址可以访问内部的成员函数和成员变量。this作用域是在类的内部,自己声明一个类的时候,还不知道实例化对象的名字,所以用this来使用对象变量的自身。
保证每个对象拥有自己的数据成员,但共享处理这些数据的代码

int (p)[3]:定义了一个名为p的指针变量,该指针指向一个三元素数组,p是一个指针变量,可以重新赋值;
int
p[3]:定义了一个名为p的数组,该数组有三个元素,每个元素都是一个指针,指针指向整形变量;

野指针:指向已经删除的对象/未知的内存区域(可以是通过malloc或new申请空间后,释放后没有将指针置为空),也有可能定义了一个指针没有初始化,由于内存空间中的值在未赋值之前是随机数,所以也有可能诞生野指针。
空指针可以确保不指向任何对象或函数,指向的空间是地址0的指针; 而未初始化指针则可能指向任何地方。

内存申请和释放

malloc-free
new-delete 如果new开辟的内存为数组形式,例如 char *p = new char[100]; 释放的时候为delete []p;
当使用free释放掉一个指针内容后,指针变量的值(资源)没变,而需要把指针设为null

const

const在的哪边,左定值,右定向
定值:指向的单元内的值不变 定向:指针的指向不变
const int
a; int const a; 定值,常量字符串的指针
int
const a; 定向,指针常量

注意指针常量和常量指针
指针数组和数组指针

箭头和点

运算符-> 相当于运算符 .
即p->num与(
p).num等价
指针变量P,p=null级p=0

指针大小

64位的机子 指针8位
32位的机子 指针4位

指针、数组、函数

“[]”的优先级大于”
int (
a[10])(int); //函数指针的数组,指向有一个参数并且返回类型均为int的函数的数组
int (a)(int);//函数指针,指向有一个参数并且返回类型 均为int的函数
int (
a)[10]; //指向有10个int类型数组的指针a
int a[10]; //指向int类型的指针数组a[10]
int
f(int);//f代表一个返回值为指针型的函数名

int a = 1, p = &a;
&
p==&a,*&a==a