1.什么是指针
在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储其中的另一个地方的值,由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元,因此降低至形象化的称为指针,意思是通过它能找到以它为地址的内存单元
通俗的来讲,
指针
指针是个变量,存放内存单元的地址
2.指针和指针类型
指针和普通的变量一样,也拥有多种变量类型
同时,值得注意的是,指针变量的类型要根据取变量的地址的数据类型来定
像这种情况就会发生数据类型不兼容的错误
3.指针类型意义
3.1指针类型决定了解引用的权限有多大
通过解引用之后,a变成了0
而这种情况下,指针变量类型为char* 而char所占大小只占一个字节,当它对指针变量进行解引用操作时,就只更改了一部分的数值。
这就是与由于指针变量类型的不同而造成的权限不同。
3.2指针类型决定了走一步走多远
由上图所示,当指针变量为int*时,对其变量进行加一,其地址的大小增加了4,也就是int所占字节大小,而char*类型的指针变量只增加了1.
4.野指针
野指针就是指指针指向的位置时不可知的(随机的,不正确的,没有明确限制的)
4.1野指针产生的原因
1 野指针未初始化
像这种情况,没有给指针进行初始化,就会给指针变量赋予一个随机值,然后对其指针变量进行解引用就是非法的内存访问
2 指针的越界访问
像这种情况,循环超过了十次,第十一次指针指向的位置并不是已经给定好了的空间,就相当于时指针越界访问。
3 地址内存释放越界
像这种情况,因为当上面的test方法访问完之后,他的空间就已经释放了,而这时对其取到返回的地址也是一个越界。
避免指针越界
1初始化指针
2小心指针越界
3指针指向空间释放及时置为null
4指针使用之前判读有效性
5.指针运算
1指针+-整数
通过p++自增的操作,使得地址不断的变化,将arr[]数组一次进行赋值。
2指针-指针
指针-指针得到的就是一段内存空间当中元素的个数。(arr数组名为首元素地址,arr+9就是最后一个元素的地址)
6.指针和数组
数组名就是数组首元素的地址
7.二级指针



