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