指针是什么
指针是编程语言中的一个对象,利用地址,它的值之间指向存在电脑存储器中的另一个地方的值。由于通过地址能找到所需的变量单元。可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
指针是个变量,存放内存单元的地址
存放在指针中的值就被当做地址处理
指针和指针类型
pa pc的都是指针都是4个字节 只是类型不一样
我们在调试窗口中选择内存,进行监视 发现改变*pa的值也可以改变a在内存中的值
我们发现指针换成char型后,第一个字节变成00.
总结:两者区别 int型赋值0,可以改变4个字节,都变为0,
char型只能改变1个字节,只有前一个变成0。
指针类型决定了指针解引用时,能够访问的空间大小。
pa跳过四个字节 pc跳过一个字符即一个字节
指针类型决定了:指针走一步走多远(指针的步长)
int*p: p+1-->4
char*p: p+1-->1
double*p: p+1-->8
arr不要要&,本身就是地址,不要取地址符号。
改成char*p=arr的话,就不能都变成1 char只有10字节 int的有40个
野指针
1.未初始化
2.指针越界(超出了范围)
3.指针指向的空间释放
除非a为static变量 出了范围不被销毁
避免野指针
1.指针要初始化
2.小心指针越界
3.指针指向空间释放要置为NULL
4.指针使用之前检查有效性
NULL指针的空间不能访问
指针运算
1、指针+-整数
2、指针-指针
3、指针的关系运算
指针-指针得出的为中间元素个数(只能同类型的计算不能int和char型计算)
模拟 strlen
p22 1:23
二级指针
指针数组--数组
数组指针--指针