程序小白
认证:优质创作者
所在专题目录 查看专题
不一样的宏定义(C语言小知识)
函数的调用和回调(OS小知识)
C语言指针数组(C语言小知识)
C语言中函数调用与堆栈详解
被C标准和编译器选项给狠狠的上了一课
extern "C" 的意义?——盘一下GCC!
作者动态 更多
RT-Thread驱动之路: Studio 挂载通用SPI flash④
4天前
RT-Thread驱动之路: Studio初始化SPI总线③
1星期前
RT-Thread驱动之路:Studio修改时钟篇②
2星期前
RT-Thread驱动之路: Studio硬件移植篇①
2星期前
RT-Thread驱动之路:stm32设备驱动开发之HWTIMER开发①
12-02 15:42

C语言指针数组(C语言小知识)

      通过一个实例来理解彻底理解指针数组的核心,我们先来看一下如下定义的两个变量,在我们不开始讲之前,看看你能理解多少?

      static QEvent const *Sto1[5];//习惯性*号和变量写在一起,当然你也可以家空格

      static QEvent * const Sto2[5];

      这个变量定义看着就头大,而且还很复杂,我们从功能上来拆解这个变量(重点:站在功能的角度来看待它,而不是站在他是如何实现的角度来看待它,这是我多年背负那种深入骨髓的痛,慢步前行中慢慢的领悟),其实我们来看 变量名Sto1[5]或Sto2[5],他是一个数组,也就是说这个变量的数据结构属性之一,他是一个顺序结构的数组

      *是这个结构里面最让人感觉的困惑的,甚至是有的地方还会用**类型的变量,假如你站在定义和实现的角度来解读它,你的思维就像是陷入了无尽的细节之中,很难再拔出来,很简单的例子,下班以后,爬上楼站在家门口,你掏出钥匙,会不会盯着门锁再脑海里思考为什么插入钥匙以后,转动钥匙,门锁就会被打开,这可能导致今天你都进不了门,你不会去研究这种问题,知道个大概的原理就足以,那你又何必去在意一个指针是怎么实现的呢。

      指针存在的意义才是我们要牢记的,他是一个句柄,可以让我们通过它迅速找到其指向数据类型中的任何变量,指针的好处是帮我们降低内存的开销,降低我们开发的复杂度,从今天开始,只要记住他的另一个名字(句柄,针总会扎心),一个句柄实际是上一串ID,通过它,我们可以访问内存的上存储的任何一个特定的对象(复合型数据或者是函数),例如给定一个身份证ID,他总是会对应唯一的一个人。

      static 定义的目的,再C中,它是静态变量,假如它在.c文件中定义,那么你们办法在另一个.c文件中,通过变量名来读写该变量。它限制的变量的作用域。

      QEvent是一个复合类型的变量,假如他是一个int类型,你也就没必要定义成句柄类型*了。

      先不管const修饰符,站在功能的角度上,这个变量的理解就出来了,首先他就是一个数组,拥有5个元素的数组,数组元素的类型为一个句柄类型,通过这个句柄可以找的一种QEvent复合结构变量。

   最后还剩下一个const修饰符,这个修饰符是限制变量的写权限的,加上以后,这个变量不能被重写。对于一个句柄来讲,加入const以后,要么句柄不能被重写,要么句柄指向的变量不能被重写

   const * 句柄,这种情况下,可以这样理解const (*句柄) 也就是const 的对象是句柄指向的复合变量(一般为结构体变量)。

   * const 句柄,这种其实不用讲了,const的就是句柄,也就是句柄不能被重写。

   看到这里了,你能看懂我们上面定义的一个复杂的变量了吗,你还会害怕去分析别的类型的变量的功能了吗?(一定要站在这个角度去看待问题,某某大人讲过,远行的目的不是去看新的风景,而是拥有一双发现风景的眼睛)。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 7
关注 141
成为作者 赚取收益
全部留言
0/200
  • 星球居民-MpJKwDuF 2020-10-05 11:07
    不错,感谢分享
    回复