1. 初始化防止出现未知内存操作危险
指针一定要初始化后进行解引用操作(*p),不然可能出现对未知内存块的操作。原因是不初始化的指针一开始的指向是随机的。
2.指针在动态内存分配的应用
new分配内存,返回地址。delete删除指针指向内存,但不会删除指针(变量)本身。new和delete应成对使用,否则发生内存泄露。
内存泄露:指的是那些被分配的内存由于没有进行回收处理,无法再进行使用。
几点注意:
- 不用delete释放不是new分配的内存
- 不要使用delete释放同一内存两次
- 如果使用new []为数组分配内存,应使用delete [] 来释放
3.指针可以当数组使用
type* p = new type [num] p[0] = xxx p[1] = yyy
原因:C/C++对于数组的编译解释都是将数组名看做一个地址(首个元素的地址)。
区别在于,数组名是常量,但指针可以修改。另外,对数组用sizeof可以得到数组长度,但是对指针用sizeof只能得到指针长度(地址长度)。
4.指针的算术
指针是地址,所以指针的加减实际上是地址的加减。指针变量+1,增加的量是它指向类型的字节数。
5.指向结构体的指针怎么访问结构内的成员
箭头成员运算符或者(*p).xxx的形式。记住核心:p是指向数据对象的地址,*p就是所指向的数据对象。