指针
本章重点:
1.指针是什么?
2.指针和指针类型
3.野指针
4.指针运算
5.指针和数组
6.二级指针
7.指针数组
指针是什么?
- 指针是一个变量,存放内存单元的地址
- 总结:指针是用来存放地址的,地址是唯一标示一块地址空间的。
- 指针的大小在32为平台是4个字节,在64位平台是8个字节
指针和指针类型
- 指针类型的意义:指针类型决定了指针进行解引用操作时能够访问空间的大小
- 当程序执行到int*pa=0时候,它改变了4个字节
- 当程序执行到char*pc=0时候,它只改变了一个字节
int *p | *p能够访问4个字节 |
---|---|
char *p | *p能够访问1个字节 |
double *p | *p能够访问8个字节 |
- 总结:指针的类型决定了,对指针解引用的时候有多大的权限(能够操作几个字节),比如:char *的指针解引用就只能访问一个字节,而int *的指针能够访问4个字节
野指针
- 概念:野指针就是指针指向的位置是不可知的(随机的,不正确的,没有明确的限制)
1.指针未初始化
2.指针越界访问
指针指向的空间释放
怎么规避野指针??
- 1.指针初始化
- 2.小心越界
- 3.指针指向空间释放即使置NULL
- 4.指针使用之前检查有效性
指针运算
- 指针+ -整数
- 指针-指针
- 指针的关系运算
指针+ -整数
指针-指针
- 算出的是中间元素的个数
- 利用指针求字符串长度
指针和数组
- 打印为 0123456789
二级指针
指针数组
- 本质上是个数组
- 而数组指针本质是个指针