内存是电脑上重要的存储器,计算机中所有程序运行时所需的数据都在内存中存储。所以为了有效的使用内 存,就把内存划分成一个个小的存储单元,每个存储单元的大小为1
个字节。
为了能够有效的访问到内存中的存储单元,就给每个存储单元进行了编号,这些编号称为存储单元的地址
指针:内存地址
获取a在内存中分配的空间地址,使用取地址符&
%p是地址的占位符
获取地址中的内容。解引用操作符*
指针变量:用来存放内存地址的变量
在同一
CPU
构架下,不同类型的指针变量所占 用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指 针以后,不仅可以对数据本身进行操作,也可以对存储数据的变量地址进行操作。
指针描述了数据在内存中的位置,标示了一个占据存储空间的实体,在这一段空间起始位置的相对距离值。
在
C/C++
语言中,指针一般被认为是指针变量,指针变量的内容存储的是其指向的对象的首地址,指向的对 象可以是变量(指针变量也是变量),数组,函数等占据存储空间的实体
指针相对于一个内存单元来说,指的是单元的地址,该单元的内容里面存放的是数据。在
C
语言中,允许用 指针变量来存放指针,因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。
不同类型的指针变量决定了对指针解引用时访问几个字节
全局变量系统会默认给初始值,局部变量不会
使用局部变量前必须进行初始化
野指针
指针中保存的无效的内存地址(随机的,不正确的,没有限制的)
野指针的成因
1,指针未进行初始化
2指针越界访问
3指针指向的空间释放
如何避免野指针
1.指针初始化
2小心指针越界
3指针指向空间释放,及时置空
4指针使用之前检查有效性
可以使用for循环访问数据中的元素
数组名:数组中首元素的地址,arr==&arr[0]
首元素的地址就是整个数组的地址
使用指针来访问对应空间的值
arr+i 理解为向下偏移i个元素,到达指定位置
指针+-整数;
加一个整数表示向下平移一个整数
减一个整数表示向上平移一个整数
如何获取数组中最后一个元素的地址
arr+size-1等价于&arr[size-1]
指针-指针;
指针-指针会得到两个指针中间元素的个数(求字符串的长度)