青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++分析研究  
C++
日歷
<2014年2月>
2627282930311
2345678
9101112131415
16171819202122
2324252627281
2345678
統(tǒng)計
  • 隨筆 - 92
  • 文章 - 4
  • 評論 - 4
  • 引用 - 0

導航

常用鏈接

留言簿

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 
  在日常的編程中,有時候需要在結構體中存放一個長度動態(tài)的字符串,一般的做法,是在結構體中定義一個指針成員,這個指針成員指向該字符串所在的動態(tài)內存空間,例如:
 
   typedef struct test
 
   {
 
   int a;
 
   double b;
 
   char *p;
 
   };
 
   p指向字符串。這種方法造成字符串與結構體是分離的,不利于操作。如果把字符串跟結構體直接連在一起,不是更好嗎?于是,可以把代碼修改為這樣:
 
   char a[] = "hello world";
 
   test *stpTest = (test *)malloc(sizeof(test) + strlen( a ) + 1 );
 
   strcpy(stpTest + 1, a );
 
   這樣一來,(char*)(stpTest + 1)就是字符串"hello world"的地址了。這時候p成了多余的東西,可以去掉。但是,又產生了另外一個問題:老是使用(char*)((stpTest + 1)不方便。如果能夠找出一種方法,既能直接引用該字符串,又不占用結構體的空間,就完美了,符合這種條件的代碼結構應該是一個非對象的符號地址,在結構體的尾部放置一個0長度的數(shù)組是一個絕妙的解決方案。不過,C/C++標準規(guī)定不能定義長度為0的數(shù)組,因此,有些編譯器就把0長度的數(shù)組成員作為自己的非標準擴展。
 
   在講述柔性數(shù)組成員之前,首先要介紹一下不完整類型(incomplete type)。不完整類型是這樣一種類型,它缺乏足夠的信息例如長度去描述一個完整的對象,它的出現(xiàn)反映了C程序員對精煉代碼的極致追求,這種代碼結構產生于對動態(tài)結構體的需求。
 
   鑒于這種代碼結構所產生的重要作用,C99甚至把它收入了標準中。C99使用不完整類型實現(xiàn)柔性數(shù)組成員,在C99 中,結構中的最后一個元素允許是未知大小的數(shù)組,這就叫做柔性數(shù)組(flexible array)成員(也叫伸縮性數(shù)組成員),但結構中的柔性數(shù)組成員前面必須至少一個其他成員。柔性數(shù)組成員允許結構中包含一個大小可變的數(shù)組。柔性數(shù)組成員只作為一個符號地址存在,而且必須是結構體的最后一個成員,sizeof 返回的這種結構大小不包括柔性數(shù)組的內存。柔性數(shù)組成員不僅可以用于字符數(shù)組,還可以是元素為其它類型的數(shù)組。包含柔性數(shù)組成員的結構用malloc()函數(shù)進行內存的動態(tài)分配,并且分配的內存應該大于結構的大小,以適應柔性數(shù)組的預期大小。柔性數(shù)組的使用請看下面的例子:
 
   typedef struct test
 
   {
 
   int a;
 
   double b;
 
   char c[0];
 
   };
 
   有些編譯器會報錯無法編譯可以改成:
 
   typedef struct test
 
   {
 
   int a;
 
   double b;
 
   char c[];
 
   };
 
   通過如下表達式給結構體分配內存:
 
   test *stpRest = (test *)malloc(sizeof(test)+100*sizeof(char));
 
   c就是一個柔性數(shù)組成員,如果把stpTest指向的動態(tài)分配內存看作一個整體,c就是一個長度可以動態(tài)變化的結構體成員,柔性一詞來源于此。c的長度為0,因此它不占用test的空間,同時stpTest->c就是“hello world”的首地址,不需要再使用(char *)(stpTest + 1)這么丑陋的代碼了。那個0個元素的數(shù)組沒有占用空間,而后我們可以進行變長操作了。這樣我們?yōu)榻Y構體指針c分配了一塊內存。用stpTest->c[n]就能簡單地訪問可變長元素。
 
   當然,上面既然用malloc 函數(shù)分配了內存,肯定就需要用free 函數(shù)來釋放內存:
 
   free(stpTest);
 
   應當盡量使用標準形式,在非C99的場合,可以使用指針方法。需要說明的是:C89不支持這種東西,C99把它作為一種特例加入了標準。但是,C99所支持的是incomplete type,而不是zero array,形同int a[0];這種形式是非法的,C99 支持的形式是形同int a[];只不過有些編譯器把int a[0];作為非標準擴展來支持,而且在C99 發(fā)布之前已經有了這種非標準擴展了,C99 發(fā)布之后,有些編譯器把兩者合而為一了. www.qcwy123.com   托福答案
 
 
posted on 2014-02-08 15:48 HAOSOLA 閱讀(567) 評論(0)  編輯 收藏 引用
 
Copyright © HAOSOLA Powered by: 博客園 模板提供:滬江博客
PK10開獎 PK10開獎
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线视频免费播放| 激情久久中文字幕| 欧美国产免费| 能在线观看的日韩av| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久久成人| 免费欧美在线| 亚洲欧洲另类| 一本久久青青| 午夜精品视频在线观看一区二区| 欧美成人一区二区三区| 亚洲香蕉成视频在线观看| 一本大道久久a久久精品综合 | 久久人人97超碰人人澡爱香蕉| 久久精品国产96久久久香蕉| 久久久噜噜噜久久人人看| 久久人人看视频| 亚洲人成人99网站| 亚洲在线观看视频| 久久久久国内| 欧美日韩国产专区| 国产精品影片在线观看| 亚洲国产欧洲综合997久久| 亚洲淫性视频| 欧美黄污视频| 亚洲欧美综合国产精品一区| 老牛嫩草一区二区三区日本| 国产精品分类| 亚洲欧洲视频| 久久久久www| 日韩一区二区免费高清| 久久久免费精品视频| 国产精品久久久久免费a∨| 亚洲精品一级| 欧美成年网站| 久久国产精品久久久久久电车| 久久精品在这里| 在线午夜精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 99在线热播精品免费| 免费成人毛片| 尤物在线精品| 久久精品九九| 亚洲综合欧美日韩| 欧美金8天国| 亚洲成人在线观看视频| 久久久久久久久久看片| 亚洲无玛一区| 国产精品福利在线观看网址| 亚洲毛片av| 亚洲国产日韩美| 久久三级视频| 亚洲大片av| 欧美国产国产综合| 老鸭窝91久久精品色噜噜导演| 国内精品国产成人| 久久久久久9999| 久久久精品性| 在线观看国产成人av片| 蜜桃伊人久久| 久久婷婷麻豆| 亚洲国产精品女人久久久| 免费成人性网站| 美女精品一区| 日韩视频一区二区在线观看 | 午夜亚洲福利| 亚洲天堂免费在线观看视频| 国产精品免费一区豆花| 久久精品免费观看| 久久九九精品| 亚洲国产欧美一区二区三区久久| 欧美激情综合| 欧美精品一区二区三区蜜臀| 一区二区三欧美| 亚洲无线视频| 国产一区二区三区日韩欧美| 欧美 日韩 国产一区二区在线视频 | 亚洲专区国产精品| 国产区在线观看成人精品| 久久久久九九视频| 欧美成人高清视频| 亚洲一区二区三区欧美| 亚洲欧美日韩精品在线| 黄色成人片子| 亚洲理伦电影| 国产欧美视频一区二区| 欧美成人69av| 国产精品伦子伦免费视频| 久久精品论坛| 欧美大片一区二区| 亚洲第一毛片| 亚洲欧美日韩精品久久久| 国产亚洲va综合人人澡精品| 蜜桃av噜噜一区| 国产精品成人播放| 免费亚洲一区| 国产精品午夜电影| 亚洲国产精品ⅴa在线观看| 国产精品美女主播在线观看纯欲| 米奇777超碰欧美日韩亚洲| 国产精品初高中精品久久| 欧美成人精品在线播放| 国产精品一区二区三区观看| 亚洲国产精品va在看黑人| 国产精品一区二区三区四区五区| 欧美国内亚洲| 国产在线不卡| 一区二区精品| 亚洲人体大胆视频| 欧美一级黄色录像| 亚洲无限av看| 欧美国产精品中文字幕| 久久久久天天天天| 国产精品久久777777毛茸茸| 欧美激情二区三区| 精品成人乱色一区二区| 亚洲综合电影| 亚洲天堂av图片| 玖玖玖免费嫩草在线影院一区| 亚洲欧洲99久久| 欧美日韩一区二区三区高清| 亚洲大黄网站| 亚洲国产精品久久久久久女王| 久久精品国产亚洲一区二区三区| 欧美一级黄色录像| 国产精品白丝av嫩草影院| 亚洲人人精品| 亚洲免费高清| 欧美日韩国产精品专区| 亚洲国产你懂的| 91久久国产综合久久蜜月精品| 久久久久久成人| 久久久久久久久一区二区| 国产农村妇女精品一二区| 亚洲特级毛片| 久久激情婷婷| 国精品一区二区三区| 久久av红桃一区二区小说| 久久久爽爽爽美女图片| 国外视频精品毛片| 久热精品视频在线观看| 亚洲大片免费看| 一本色道久久综合亚洲二区三区| 欧美日韩国产bt| 99热在这里有精品免费| 亚洲欧美日韩在线观看a三区| 国产精品久久波多野结衣| 亚洲自拍偷拍视频| 麻豆av福利av久久av| 亚洲欧洲视频在线| 欧美先锋影音| 欧美在线看片| 亚洲国产精品久久久久秋霞蜜臀 | 久久久水蜜桃av免费网站| 久久中文字幕一区| 亚洲国产高清视频| 一区二区欧美亚洲| 亚洲第一综合天堂另类专| 免费在线成人av| 日韩午夜av在线| 欧美一区二区啪啪| 亚洲成人在线网站| 欧美日韩视频| 久久国产精品99国产| 欧美高清在线视频观看不卡| 一本久久知道综合久久| 国产日本欧洲亚洲| 欧美大片91| 亚洲欧美99| 亚洲观看高清完整版在线观看| 在线亚洲观看| 极品日韩av| 欧美无乱码久久久免费午夜一区| 午夜亚洲福利在线老司机| 欧美激情视频一区二区三区免费| 亚洲一区国产精品| 亚洲第一精品福利| 国产精品乱看| 久久一区二区三区超碰国产精品| 夜夜嗨一区二区| 欧美成人影音| 欧美一区二区视频在线| 亚洲美女毛片| 在线播放豆国产99亚洲| 欧美特黄一区| 欧美电影在线观看完整版| 欧美在线关看| 亚洲一区二区视频| 99国产一区| 91久久久久| 美女精品视频一区| 性欧美精品高清| 亚洲网址在线| 一区二区三区国产在线观看| 亚洲高清在线观看一区| 国产亚洲欧美一区二区| 国产精品男女猛烈高潮激情| 欧美日产在线观看| 欧美大片18| 欧美成人日韩|