1. 常量指针:“是常量的指针”,即指针指向一个常量。
int i = 5;
const int *pi = &i;
2. 指针常量:“是指针的常量”,即指针存储的内存地址是一个常量,不能修改。
int i = 5;
int* const p = &i;
3. 函数指针:“指向函数的指针”,函数名是函数的首地址。
// 声明形式
typedef 函数返回类型 (*函数指针名称)(形参类型1,形参类型2);
// 例子
typedef long (*fun)(int);
// 函数指针fun,指向一个返回类型为long型,参数类型为int型的函数。
4. 指针数组:“是指数组的元素是一个指针”,即数组里面装着指针。
int *ptr[4]; // ptr是一个有4个元素,每个元素都是一个指向int指针的指针数组。
//
int *(ptr[4]); // Ditto 5. 数组指针:“是指指向数组的指针”,即它是指针,指向整个数组。
// ptr是一个指向整型数组的指针。
int (*ptr)[]; 6. 迷途指针:“也叫悬浮指针,失控指针,是当对一个指针进行delete操作后(这样会释放它所指向的内存),并没有把它设置为空时产生的”。而后,如果你没有重新赋值就试图再次使用该指针,引起的结果是不可预料的。
int i = 5;
int *pInt = new int;
pInt = &i;
delete pInt; // 此时pInt为迷途指针
pInt = NULL; // 此时PInt为空指针