关注、星标公众号,直达精彩内容
来源:技术让梦想更伟大
作者:李肖遥
C语言中有没有见过(int [2]){19,20}
或者int (*pt2)[4]
的使用方法,字面上可能不好理解,这是C99之后才新增的知识点,名为复合字面量(Compound Literals)
,一旦熟悉使用,便会体会到它简洁而强大的表达。
什么是复合字面量?
假设给带int类型的形参函数传递一个值,可以传递int类型的变量,也可以传递int类型常量,但是对于带数组形参的函数则不一样,可以传递数组,但是不支持传递数组常量,由此C99新增了复合字面量的用法,字面量是指除符号常量外的常量。
例如10是int的类型的字面量,10.24是double类型的字面量,“lixiaoyao”是字符串的字面量等,如果有数组或者结构体的字面量,这样使用起来会更方便。
对于数组
数组的复合字面量和数组初始化列表差不多,前面使用括号括起来的类型名,例如下面是一个普通的数组声明。
int age[