空指针和 指向指针的指针
空指针:
在 C/C++中,可以用 “NULL” 关键字对任何类型的指针进行赋值。值为 NULL 的指针,被称为 空指针。
空指针指向地址 0。一般来说,程序不需要,也不能在地址 0 处进行读写。
如:int * pn = NULL; char * pc = NULL;
指向指针的指针:
如果一个指针里存放的是另一个指针的地址,则称这个指针为指针的指针。
比如: int ** p;
这样的写法是合法的,它定义了一个指针p,变量p 的类型是 int **。“ *p ” 则表示一个类型为 int * 的指针变量。在这种情况下,我们说,p 是 “指针的指针” ,因为p 指向的是个类型为 int *的指针,既可以认为p 指向的地方存放着一个类型为 int * 的指针变量。
1 // 一般写法
2 int a;
3 int * pa = &a;
4 int ** ppa = &pa;
总结一般规律,如果定义:
T **p; // 此处T 可以是任何类型名
那么 p 就被称为 “指针的指针” 。p 这个指针,其类型是 T** ,而表达式 “* p” 的类型是 T * ,“* p” 表示一个类型为 T * 的指针。
同理,int ***p; int ****p;int *****p;等,不论中间有多少个“*”,都是合法的定义。
值得注意的是:不论 T 表示什么类型,sizeof(T* ) 的值都是 4。也就是说,所有指针变量,不论他是什么类型的,其占用的空间都是 4 个字节。
我们还可以定义 指针数组,如:
int * array[5];
那么 array 数组里的每个元素都是一个类型为 int * 的指针。
整理来源:程序设计导引及在线实践.pdf
沉舟侧畔千帆过,病树前头万木春。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现