什么是指针
指针是一种数据类型(里面存储的是整数),使用它可以用来定义变量(与int、long一样),与int、long不同的是它存储整数代表了内存的编号,通过这个变量可以访问对应编号的内存
为什么使用指针
1、堆内存无法取名字(无法使用标识符与堆内存建立联系),必须配合指针
2、函数之间的参数是值传递(内存拷贝),使用指针可以优化参数的传递效率(指针永远传递4字节,无论内容多大)(需要对变量进行保护)
3、函数之间是相互独立的,有时协同配合需要共享变量(全局变量会造成命名冲突),函数之间传递变量的地址,可以达到共享变量的效果
如何使用指针
定义:类型* 变量名_p;
1、指针变量与普通变量一样,默认值不确定,因此要初始化,且一般初始化为NULL
2、指针变量的用法与普通变量不同,一般以p结尾加以区分
3、指针变量的类型决定了通过指针变量访问内存时访问几个字节
4、指针变量不能连续定义
int* p1,p2; // p是指针,p2是int类型变量
int *p1,*p2; // p1和p2都是指针
赋值:指针变量 = 内存编号
1、类型要争取
2、内存编号要能够方位,如果编号编写错误,可能造成段错误
int* p = malloc(4);
int* p = & num; // 引用内存
访问:*指针变量 // 解引用
1、根据指针变量中存储的内存编号去访问对应的内存
2、如果之前赋值的内存编号有误,这个步骤会出现段错误
3、访问的字节由指针类型决定
int* p = & num;
*p <=> & num