当前位置: 首页 > 科技观察

C语言匿名的最高境界

时间:2023-03-12 04:33:25 科技观察

什么是复合字面量?假设你给一个int类型参数的函数传递一个值,你可以传递一个int类型的变量,也可以传递一个int类型的常量,但是对于一个数组参数的函数就不一样了,你可以传递一个数组,但是它不支持传递数组常量。因此,C99增加了复合文字的使用,复合文字指的是符号常量以外的常量。比如10是int类型字面量,10.24是double类型字面量,“lixiaoyao”是字符串字面量等,如果有数组或者结构体字面量,使用起来会更方便。数组的数组的复合字面量类似于一个数组初始化列表,前面用括号括起来的类型名。例如,下面是一个普通的数组声明。intage[2]=[19,20];下面创建一个和age数组一样的匿名数组,同样有两个int类型的值(int[2]){19,20};//复合字面量注意去掉声明中的数组名,剩下的int[2]是复合字面量的类型名。数组的大小在用数组名初始化数组时可以省略,复合字面量的大小也可以省略。编译器会自动计算数组当前元素个数:(int[]){19,20,21,22,23}//5个元素的复合字面量是匿名的,不能先创建再使用.创建它时必须使用它,如下所示:intx;//correctx=100;intarr[1];//Errorarr={0};一般需要这样定义和使用:int*pt1;pt1=(int[2]){19,20};注意复合字面量的字面常量和上面创建的age数组的字面常量是完全一样的,而且复合字面量的类型名也代表了第一个元素的地址,所以可以赋值给指向int的指针。作为实际参数复合文字作为实际参数传递给具有匹配形式参数的函数#includeintsum(constintage[],intn);intmain(){inttotal;总计=sum((int[]){4,4,4,5,5,5},6);返回0;}intsum(constintage[],intn){inti=0;for(i=0;i