本文主要为大家介绍C语言的一些局部知识,这里简单说说C语言复合文。读者需要有一定的C语言基础。前言C99添加了复合文字。文字是非符号常量。例如:5是一个int类型的文本;82.3是float等类型的文本。C99标准委员会认为,如果能表示数组和结构体内容的复合字面量,写程序时会方便很多。数组复合文字是如何定义的对于一个数组,复合文字看起来就像数组初始化列表之前用括号括起来的类型名称。#includeintmain(){intiArray[]={10,20};//普通数组int&pArray=(int[]){10,20};//复合字面量//int&pArray=(int[2]){10,20};等价于上面的return0;}分析:类型名是前面声明中去掉iArray后剩下的部分,即int[2]。复合字面量初始化时可以省略数组大小,编译器会自动计算元素个数。复合文字没有名称,必须创建以使用特定类型表示它们以便于使用。作为函数参数的复合文字复合文字也可以作为实际参数传递给具有匹配类型的形式参数的函数。以下测试用例:#includevoidprint(intarray[],intarrayNum){for(inti=0;iintmain(){int(*pArray)[4];//声明一个数组指针pArray=(int[2][4]){{1,2,3,-9},{4,5,6,-8}};return0;}二维数组或多维数组中的复合文本使用如下结构复合文本用法。#include#includestructMM{charfirstName[20];charsecondName[20];};voidgetName(structMMmm){puts(strcat(mm.firstName,mm.secondName));}intmain(){getName((structMM){"small","cute"});//调用return0;}复合文本也可以取地址#include#includestructMM{charfirstName[20];charsecondName[20];};intmain(){structMM*pMM=&((structMM){"small","cute"});//调用printf("%s%s\n",pMM->firstName,pMM->secondName);return0;}打印上面程序的结果:小可爱总结当需要临时构造一个类似的结构时,可以使用(type_name){xx,xx,xx},type_name定义在Format之前,去掉变量名即可(数组名称)。这种使用方法有点像C++的构造函数。复合字面量相当于一个常量,但形式更复杂。凡是可以使用常量的地方都可以使用复合字面量,比如宏定义。使用复合文本,当你想传递一个“常量”时,不需要先定义它,然后再传递值,比如传递一个常量坐标(structpoint{doublex;doubley;}),所以不需要先定义结构体变量,通过结构体后,代码更简洁。值得注意的是,复合文字具有左值语义。好了,复合文字的介绍到此结束,大家可以先练习一下。