简单好用的C语言偏门知识,复合文字,编程小知识值得拥有

 本文主要介绍一些C语言的一些偏门知识给大家,在这里简单谈一下C语言复合文字。需要读者具备一定的C语言基础。

创新互联建站专注于都昌企业网站建设,成都响应式网站建设公司,商城系统网站开发。都昌网站建设公司,为都昌等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

前言

C99新增了复合文字(compound literal)。文字是非符号常量。例如:5是int类型的文字;82.3是float类型的文字等等。C99标准委员会认为:如果又能够表示数组和结构内容的复合文字,那么在编写程序的时候要方便得多。

数组复合文字的定义方式

对于数组来说,复合文字看起来像是在数组的初始化列表前面加上用圆括号括起来的类型名。

 
 
 
 
  1. #include  
  2. int main() 
  3.   int iArray[]={10,20};             //普通数组 
  4.   int &pArray=(int []){10,20};      //一个复合文字   
  5.   //int &pArray=(int [2]){10,20};   与上文等效 
  6.   return 0; 

 解析:

  • 类型名就是前面声明中去掉iArray后剩余部分,即int[2]。
  • 初始化复合文字可省略数组大小,编译器会自动计算元素数目。
  • 复合文字没名称,必须创建时通过特定类型表示他们,便于使用。

复合文字充当函数参数

复合文字也可以作为实际参数被传递给带有类型与之匹配的形式参量的函数。如下测试案例:

 
 
 
 
  1. #include  
  2. void print(int array[], int arrayNum)  
  3.   for (int i = 0; i < arrayNum; i++)  
  4.   { 
  5.     printf("%d\t", array[i]); 
  6.   } 
  7. int main()  
  8.   print((int[]){1,2,3,4,5,6}, 6); 
  9.   return 0; 

 测试截图如下:

此处第一个参数是包含6个元素的int型数组,同时也是首元素的地址(同数组名一样)。这种给函数传递信息而不必先创建数组的做法,是复合常量的通常使用方法。

二维数组或多维数组中复合文字

这种技巧也可以用在处理二维数组或多维数组的函数中。例如,下面的代码介绍如何创建一个二维int数组并保存其地址。

 
 
 
 
  1. #include  
  2. int main()  
  3.   int(*pArray)[4];//声明一个数组指针 
  4.   pArray = (int[2][4]){ {1,2,3,-9},{4,5,6,-8} }; 
  5.   return 0; 

 二维数组或多维数组中复合文字

用如下结构体复合文字用法。

 
 
 
 
  1. #include  
  2. #include  
  3. struct MM  
  4.   char firstName[20]; 
  5.   char secondName[20]; 
  6. }; 
  7. void  getName(struct MM mm) 
  8.   puts(strcat(mm.firstName, mm.secondName)); 
  9. int main()  
  10.  
  11.   getName((struct MM) { "小", "可爱" });  //调用 
  12.   return 0; 

 复合文字也可以取地址

 
 
 
 
  1. #include  
  2. #include  
  3. struct MM  
  4.   char firstName[20]; 
  5.   char secondName[20]; 
  6. }; 
  7.  
  8. int main()  
  9.  
  10.   struct MM* pMM = &((struct MM) { "小", "可爱" });  //调用 
  11.   printf("%s%s\n", pMM->firstName, pMM->secondName); 
  12.   return 0; 

 以上程序运行结果打印:小可爱

总结

  1. 当一个类似结构的东西需要临时构造的时候,可以用 (type_name){xx,xx,xx},而type_name就是之前定义的格式,去掉变量名(数组名)即可, 这种使用方法有点像 C++ 的构造函数。
  2. 复合文字就相当于一个常量,只不过形式较为复杂而已,所有可以用常量的地方均可以用复合文字,例如,宏定义。
  3. 使用复合文字,在想传一个“常量”时,就不必先定义,再传值了,比如传一个常数坐标(struct point{double x;double y;}),这样就不用先定义一个结构变量,再传结构体过去了,代码更加简洁。
  4. 值得注意的是,复合文字具有左值语义。

好了,复合文字就介绍到这里,大家可以先练习一下。

网页题目:简单好用的C语言偏门知识,复合文字,编程小知识值得拥有
网页路径:http://www.shufengxianlan.com/qtweb/news26/146726.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联