成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單好用的C語言偏門知識,復合文字,編程小知識值得擁有

開發 后端
本文主要介紹一些C語言的一些偏門知識給大家,在這里簡單談一下C語言復合文字。需要讀者具備一定的C語言基礎。

[[386222]]

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

前言

C99新增了復合文字(compound literal)。文字是非符號常量。例如:5是int類型的文字;82.3是float類型的文字等等。C99標準委員會認為:如果又能夠表示數組和結構內容的復合文字,那么在編寫程序的時候要方便得多。

數組復合文字的定義方式

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

  1. #include <stdio.h> 
  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 <stdio.h> 
  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 <stdio.h> 
  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 <stdio.h> 
  2. #include <string.h> 
  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 <stdio.h> 
  2. #include <string.h> 
  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. 值得注意的是,復合文字具有左值語義。

好了,復合文字就介紹到這里,大家可以先練習一下。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-12-15 12:35:51

C語言編程內存

2010-03-19 09:39:17

Python編程語言

2022-01-14 19:20:14

開源編程語言軟件開發

2020-10-19 14:23:48

C語言編程語言

2024-02-21 14:55:19

C++語言編程

2018-12-05 15:15:37

編程語言編碼資源工具

2021-12-23 23:11:37

C語言編程工具

2011-07-21 17:33:27

JAVA

2011-07-21 17:18:52

java

2011-07-22 10:02:07

java

2011-07-22 10:38:04

java

2011-07-13 18:24:18

C++

2011-07-21 17:45:02

java

2011-07-22 09:43:37

java

2010-01-19 14:45:35

C++語言

2016-12-20 18:44:22

2009-08-21 17:55:52

C#復合控件

2013-07-29 04:46:48

iOS開發iOS開發學習iOS小知識

2013-07-08 15:41:07

Ubuntu

2021-09-26 16:08:49

手機屏幕技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91资源在线| 免费视频一区二区三区在线观看 | 国产亚洲二区 | 中文精品久久 | 伊人免费在线观看 | av电影手机版 | 超级乱淫av片免费播放 | 我要看一级片 | 婷婷午夜天 | 视频一区二区三区中文字幕 | 天堂成人国产精品一区 | 91视频日本 | 97日韩精品 | 免费小视频在线观看 | 欧美视频在线看 | 亚洲精品久久久久久宅男 | 成人av资源在线 | 一区二区在线不卡 | 夜夜爽99久久国产综合精品女不卡 | 精品亚洲一区二区 | 精品视频一区二区三区四区 | 一区二区三区国产 | 一区二区三区在线播放 | 国产 日韩 欧美 在线 | 99久久久久久99国产精品免 | 国产精品揄拍一区二区 | 看羞羞视频 | 在线看91 | 欧美一卡二卡在线 | 久亚州在线播放 | 精品乱码久久久久 | 成人在线精品 | 日韩成人在线电影 | 久久综合九九 | 精品国产不卡一区二区三区 | 九九久久国产 | 精品三区 | 中文字幕精品视频在线观看 | 日日骚网 | 久久一区二区视频 | 中文字幕一区二区三区精彩视频 |