一、空指针,野指针,无类型指针
1.空指针
是指没有指向任何一个存储单元的指针,内部装的内容全为0。当我们需要用到指针,但不确定指针指向何处时使用。一般形式为:
int *p = NULL;
2.野指针
未初始化的指针,内部装的内容为随机数,可能指向系统中任意一块存储空间,若指向的存储空间正在使用,当发生调用并执行操作时,就可能造成系统崩溃。
返回值为指针的指针函数,若返回指向局部变量地址的指针,具有动态生存期的局部变量在销毁后,该指针则变为野指针。
3.万能指针
这种指针指向一块内存,但因其类型不定,程序无法根据这种定义为该指针指向的变量分配存储空间,所以如果要使用该指针为其他指针赋值,必须先类型转换成其他类型的指针。例如:
void *p;
二、const的用处
1.对普通变量
使该变量变为只读状态,无法通过直接访问来修改其内容。例如:
const int i = 123;
i = 100; //错误,只读变量无法赋值
但可以通过指针对其进行间接访问来修改内容。
2.对指针变量
使指针所指向的内容变为只读状态,无法通过指针对其间接访问来修改内容。例如:
int i = 123;
const int *p = &i;
*p = 100; //错误,不可修改指向的内容
使指针变为只读状态,无法修改指针内的地址。例如:
int i = 123;
int const *p = &i;
p += 1; //错误,不可修改指针内的地址
三、快速排序
指针内装的是地址,因此指针之间不能进行加法运算,但可进行减法运算。相减的结果为两指针所装地址相差多少个基类型。
快速排序:
选定基准值,从两头分别和基准值比较,比基准值大的向后,比基准值小的向前,优先排好基准值。
二分查找法:
快速查找法: