作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,BSP开发
作者主页:一个平凡而乐于分享的小比特的个人主页
文章收录专栏:C语言指针总结,C语言指针是C语言部分重难点,也是编程笔试和面试的重灾区,本专栏旨在总结C语言学习过程中的易错点,通过调试代码,分析原理,对指针有更清晰的理解
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖
C语言从本科就开始学起,也考过计算机二级C语言。但总觉得指针这块没有学习通透。想通过写博客的方式,对知识点作进一步的梳理,也是一个很好与同行交流的机会。
1.指针+/-整数
指针的类型决定了指针向前或者向后走了一步有多大(距离)。
举个例子:
在c语言中,char类型占1个 字节,int类型占4个字节,pc是字符型指针,每次一动只移动一个字节。而pi是整型指针,每次一动移动4个字节。可以通过输出的地址值明显看出。
2.指针的解引用
指针的类型决定了对指针解引用的时候有多大的权限(能操作几个字节)。
举个例子:
由于pa是整型指针,解引用后能操作4个字节,图中可以看出指针指向的内存4个字节全为0。
由于pc是字符型指针,解引用后能操作1个字节,从图中可以看出只有一个字节为0。
补充:int*p;*p能够访问4个字节
char*p;*p能够访问1个字节
double*p;*p能够访问8个字节
3.野指针
3.1野指针成因
3.1.1指针未初始化
p指针所指向的地址是个随机值
3.1.2指针越界访问
3.1.3指针指向的空间释放
主函数中p指向test函数,在test函数中整型变量a为局部变量,当执行完test函数后变量a的地址返回给操作系统,因此p指针指向的空间释放,p为野指针。