指针
指针就是变量,用来存放地址的变量(存放在指针中的值都被当成地址处理)
指针的大小在32位平台上是4个字节,在64位平台上是8个字节
指针和指针类型
指针类型决定了指针进行解引用操作的时候,能访问空间的大小
int*p; p能够访问4个字节
char*p; p能够访问一个字节
double*p; p能够访问8个字节
指针类型决定了:指针走一步走多远(指针步长)
int*p; p+1->4 (字节)
char*p; p+1->1
double*p; p+1->8
野指针
野指针就是指针指向的位置是不可知的(随机的,不正确的,没有明确限制的)
野指针成因
1,指针未初始化
2,指针越界访问
3,指针指向的空间释放
如何规避野指针
1,指针初始化
当你不清楚应该把指针初始化谁时,可以这样
int*p=NULL;//NULL是((void*)0),本质上是一个0
NULL用来初始化指针的,给指针赋值
2,小心指针越界
3,指针指向空间释放,你不想用指针时,可以置为NULL
4,指针使用之前检查其有效性
if(pa=NULL)空指针里面放的地址不能用
就不能用
if(pa!=NULL)
就可以用
指针运算
指针+- 整数
指针-指针
指针的关系运算(比较大小啥的)
1,指针+-整数
2,指针-指针
求个数的实例
3,指针的关系运算
标准规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较
指针和数组
数组可以通过指针访问
二级指针
int**,第一个*是表示int*,第二个*是表示后面的ppa是指针
指针数组,数组指针
指针数组--是一个存放指针的数组
数组指针--是一个指针