0
点赞
收藏
分享

微信扫一扫

1653_C语言在定义数组的时候指定某几个元素的初始值


GreyZhang/c_basic: little bits of c. (github.com)

         感觉在嵌入式的世界里呆久了,对于C语言的了解也受到了工作内容以及风格的影响。当尝试去看其他领域的一些信息的时候,经常发现一些C语言的神奇技巧。

1653_C语言在定义数组的时候指定某几个元素的初始值_数据结构

         看别人的代码的时候我看到了一个数组定义,比较奇特。至少,对于我来说是比较奇特的。但是,看到这样的形式基本上就已经清楚了这个其实是指定了几个元素的初始值。这样的处理,很容易通过结构体的成员赋值的模式来联想到。

         既然只是联想猜测,那么验证的方式其实也很简单,要么去找对应的说明,可能会涉及到C标准,也可能得翻基本C教程。如果不想劳师动众,还可以简单直接做一个测试。

1653_C语言在定义数组的时候指定某几个元素的初始值_初始化_02

         为了验证这样的功能,我写了一个这样的测试测试代码。如果猜测的是准确的,那么打印出来的信息中,0、1、2、8应该对应着8、1、5、7的数值。

1653_C语言在定义数组的时候指定某几个元素的初始值_初始化_03

         测试的结果与预期一致,看得出来这就是一个指定某些元素初始化为具体数值的一种方式。不过,我觉得这样的探索还不应该结束。如同结构体成员的初始化,其实我在初始化的时候是可以做到编写上的“乱序”的。虽然,我还考虑不到为什么数组会有这样的处理,不过我也想测试一下。至少,先看看是否有这样的功能支持。

1653_C语言在定义数组的时候指定某几个元素的初始值_数据结构_04

         为此,我把代码修改成上面的形式。如果支持乱序,首先这个编译应该是可以通过的,其次,应该输出与之前的代码完全一样的输出结果。

1653_C语言在定义数组的时候指定某几个元素的初始值_数组_05

         以上是对这一段新代码的编译测试效果,不仅编译顺利通过而且输出了与之前的代码一样的结果。看起来,这个数组初始化的自由设计程度还是很高的,可以支持初始化信息的乱序。

         这样的功能看起来暂时考虑不到有什么具体的用法会在我现在的工作中用上,不过至少给了我一点令人开心的信息:C语言的编码有些地方的确是非常有趣。可能,有了这样的灵活度之后,稍微痛苦一些的会是编译器的开发人员吧!

举报

相关推荐

0 条评论