【指针】指针详解(2)


前言

提示:这里可以添加本文要记录的大概内容:

这篇博客将陪伴你漫步在指针的世界里,从它最简单的认识到深入探讨它的奥妙之处。我们将剖析指针的原理,揭开它的神秘面纱,一起领略它在内存管理、数据结构和函数操作中的独特魅力。通过学习指针,我们可以更加敏锐地感知程序的细微变化,如同一双敏锐的双眼,洞察代码的深邃之处。


提示:以下是本篇文章正文内容,下面案例可供参考

数组名的理解

具体内容可以此文章去查看深入理解数组名

⼀维数组传参的本质

相信大家到指针阶段,已经对数组内容有些许了解了,那么以为数组传参的本质到底是什么?
首先考虑一个问题,我们通常是在函数外部计算数组元素个数再传给函数,那我们是否可以直接在函数内部计算数组元素的个数呢????

先看一个程序
在这里插入图片描述
上面的程序可以看出,函数外部计算的数组元素个数是正确的,而函数内部计算的数组元素的个数是错误的

这就引出了一维数组传参的本质:数组传参本质上传递的是数组⾸元素的地址
一维数组传参时函数的形参部分理论上应该使用指针变量来接受数组首元素的地址。那么在函数内部sizeof(arr)计算的实际上是一个指针的大小而不是数组的大小。就是因为函数的参数部分本质是指针,所以在函数内部是没办法求数组元素的个数的
sizeof(arr)在32位平台是四个字节/sizeof(arr[0]])结果就是1

如果不明白指针变量的大小可以看这篇文章指针变量的大小

二级指针

先思考一个问题:指针变量是用来存放变量地址的,那么指针变量的地址可以存放在哪里?

答案就是二级指针来接受指针变量的地址
用一个图来说明他们之间的关系
在这里插入图片描述

二级指针说明(见代码)
在这里插入图片描述
这里ppb解引用后的结果是b的地址,足以说明二级指针存放的pb的地址,解引用得到pb所指向的内容即b的地址。

指针数组

什么是指针数组?我们可以类比来理解,整型数组是存放整型变量的数组,字符数组是存放字符变量的数组,那么指针就是存放指针的数组

注意:这里很容易和数组指针混淆,我们只需要关注他们的后缀就很好区分了。数组指针的内容再后续文章中说明
如图
在这里插入图片描述

指针数组模拟二维数组

在这里插入图片描述

总结

在本博客中,我们深入探讨了C语言中的数组和指针相关概念,包括数组名的特性、一维数组传参、二级指针以及指针数组。

  • 数组名: 它是数组首地址的常量指针,理解它有助于我们更好地处理数组的内存布局和访问方式。

  • 一维数组传参: 我们学到了数组传参的本质,即传递数组的首地址,这使得我们能够在函数内部对数组进行修改。

  • 二级指针: 深入了解了二级指针,为处理复杂的数据结构提供了便利,使我们能够在内存中建立多层关联。

  • 指针数组: 这种数组的元素是指针,每个指针指向内存中的一个地址,为我们提供了存储不同类型数据的灵活性。

这些概念的理解不仅为高效编程提供了基础,也为进一步学习复杂的数据结构和算法奠定了坚实的基础。通过这篇博客,希望读者能更深刻地认识这些关键概念,使他们的编程之路更为清晰和自信。

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值