总结
指针的概念比较多,抽象并且复杂,我们再把这一部分的内容回顾一下。
指针的含义
记住一句话,指针就是地址
。
凡事指针出现的地方,都是用地址代替
的。
变量的指针:变量的地址
指针变量:地址变量
常见变量
1 | int a; //定义整型变量 a |
区别指针和指针变量
指针就是地址本身,我们把地址称为指针。
指针变量,是存储着地址的一种指针变量,指针变量的值是地址
。
什么叫做指向
地址就意味着指向。
通过地址我们就能找到该地址对应的对象。
指针变量,存放地址,指针变量存放谁的地址,就指向谁。
(主要一匹配指针变量基类型和地址对象类型)
void * 是一种特殊的指针类型,它不指向任何数据,如果需要让它指向数据,需要先对其进行基类型转换。
1 |
|
数组与指针
指针指向一维数组,一定是指向的该数组的首元素地址。
1 | int a[20]; |
指针运算
指针变量加减一个整数
1 | P++; |
用于移动指针,加减的是指向变量所占用存储单元字节数相加减。
指针变量赋值
将一个变量地址赋值给一个指针变量。
1 | p=&a; //将变量 a 的地址赋值给指针变量 p |
两个指针变量可以相减
两个指针变量指向同一数组元素
,两个指针变量值之差就是元素个数。
两个指针变量比较
若两个指针指向同一数组元素
,则可以进行比较
,指向前面元素的指针变量小于
只想后面元素的指针变量。
指针变量可以有空值
指针变量也可以为空,即该指针变量不指向任何变量。
1 | p=NULL; |
NULL 是一个符号常量,表示整数0,在 stdio.h 文件中对 NULL 进行了定义。
1 |
注意
指针 p 的值等于 NULL 和指针 p 没有赋值是两个概念。
p=NULL;还是有值的,值为 0
不给 p 赋值,p 的值则无法预料,可能指向一个事先未指定的单元。
切记,在引用指针变量之前,对它赋值。
小技巧
任何指针变量都可以与 NULL 做不相等比较
1 | if(p==NULL){ |
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。