日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
簡單好用的C語言偏門知識,復(fù)合文字,編程小知識值得擁有

 本文主要介紹一些C語言的一些偏門知識給大家,在這里簡單談一下C語言復(fù)合文字。需要讀者具備一定的C語言基礎(chǔ)。

創(chuàng)新互聯(lián)建站專注于都昌企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開發(fā)。都昌網(wǎng)站建設(shè)公司,為都昌等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

前言

C99新增了復(fù)合文字(compound literal)。文字是非符號常量。例如:5是int類型的文字;82.3是float類型的文字等等。C99標(biāo)準(zhǔn)委員會認(rèn)為:如果又能夠表示數(shù)組和結(jié)構(gòu)內(nèi)容的復(fù)合文字,那么在編寫程序的時候要方便得多。

數(shù)組復(fù)合文字的定義方式

對于數(shù)組來說,復(fù)合文字看起來像是在數(shù)組的初始化列表前面加上用圓括號括起來的類型名。

 
 
 
 
  1. #include  
  2. int main() 
  3.   int iArray[]={10,20};             //普通數(shù)組 
  4.   int &pArray=(int []){10,20};      //一個復(fù)合文字   
  5.   //int &pArray=(int [2]){10,20};   與上文等效 
  6.   return 0; 

 解析:

  • 類型名就是前面聲明中去掉iArray后剩余部分,即int[2]。
  • 初始化復(fù)合文字可省略數(shù)組大小,編譯器會自動計算元素數(shù)目。
  • 復(fù)合文字沒名稱,必須創(chuàng)建時通過特定類型表示他們,便于使用。

復(fù)合文字充當(dāng)函數(shù)參數(shù)

復(fù)合文字也可以作為實際參數(shù)被傳遞給帶有類型與之匹配的形式參量的函數(shù)。如下測試案例:

 
 
 
 
  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; 

 測試截圖如下:

此處第一個參數(shù)是包含6個元素的int型數(shù)組,同時也是首元素的地址(同數(shù)組名一樣)。這種給函數(shù)傳遞信息而不必先創(chuàng)建數(shù)組的做法,是復(fù)合常量的通常使用方法。

二維數(shù)組或多維數(shù)組中復(fù)合文字

這種技巧也可以用在處理二維數(shù)組或多維數(shù)組的函數(shù)中。例如,下面的代碼介紹如何創(chuàng)建一個二維int數(shù)組并保存其地址。

 
 
 
 
  1. #include  
  2. int main()  
  3.   int(*pArray)[4];//聲明一個數(shù)組指針 
  4.   pArray = (int[2][4]){ {1,2,3,-9},{4,5,6,-8} }; 
  5.   return 0; 

 二維數(shù)組或多維數(shù)組中復(fù)合文字

用如下結(jié)構(gòu)體復(fù)合文字用法。

 
 
 
 
  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) { "小", "可愛" });  //調(diào)用 
  12.   return 0; 

 復(fù)合文字也可以取地址

 
 
 
 
  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) { "小", "可愛" });  //調(diào)用 
  11.   printf("%s%s\n", pMM->firstName, pMM->secondName); 
  12.   return 0; 

 以上程序運行結(jié)果打印:小可愛

總結(jié)

  1. 當(dāng)一個類似結(jié)構(gòu)的東西需要臨時構(gòu)造的時候,可以用 (type_name){xx,xx,xx},而type_name就是之前定義的格式,去掉變量名(數(shù)組名)即可, 這種使用方法有點像 C++ 的構(gòu)造函數(shù)。
  2. 復(fù)合文字就相當(dāng)于一個常量,只不過形式較為復(fù)雜而已,所有可以用常量的地方均可以用復(fù)合文字,例如,宏定義。
  3. 使用復(fù)合文字,在想傳一個“常量”時,就不必先定義,再傳值了,比如傳一個常數(shù)坐標(biāo)(struct point{double x;double y;}),這樣就不用先定義一個結(jié)構(gòu)變量,再傳結(jié)構(gòu)體過去了,代碼更加簡潔。
  4. 值得注意的是,復(fù)合文字具有左值語義。

好了,復(fù)合文字就介紹到這里,大家可以先練習(xí)一下。


名稱欄目:簡單好用的C語言偏門知識,復(fù)合文字,編程小知識值得擁有
文章來源:http://m.5511xx.com/article/copoped.html