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

C++分析研究  
C++
日歷
<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
統計
  • 隨筆 - 92
  • 文章 - 4
  • 評論 - 4
  • 引用 - 0

導航

常用鏈接

留言簿

隨筆檔案

文章檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 
  在日常的編程中,有時候需要在結構體中存放一個長度動態的字符串,一般的做法,是在結構體中定義一個指針成員,這個指針成員指向該字符串所在的動態內存空間,例如:
 
   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長度的數組是一個絕妙的解決方案。不過,C/C++標準規定不能定義長度為0的數組,因此,有些編譯器就把0長度的數組成員作為自己的非標準擴展。
 
   在講述柔性數組成員之前,首先要介紹一下不完整類型(incomplete type)。不完整類型是這樣一種類型,它缺乏足夠的信息例如長度去描述一個完整的對象,它的出現反映了C程序員對精煉代碼的極致追求,這種代碼結構產生于對動態結構體的需求。
 
   鑒于這種代碼結構所產生的重要作用,C99甚至把它收入了標準中。C99使用不完整類型實現柔性數組成員,在C99 中,結構中的最后一個元素允許是未知大小的數組,這就叫做柔性數組(flexible array)成員(也叫伸縮性數組成員),但結構中的柔性數組成員前面必須至少一個其他成員。柔性數組成員允許結構中包含一個大小可變的數組。柔性數組成員只作為一個符號地址存在,而且必須是結構體的最后一個成員,sizeof 返回的這種結構大小不包括柔性數組的內存。柔性數組成員不僅可以用于字符數組,還可以是元素為其它類型的數組。包含柔性數組成員的結構用malloc()函數進行內存的動態分配,并且分配的內存應該大于結構的大小,以適應柔性數組的預期大小。柔性數組的使用請看下面的例子:
 
   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就是一個柔性數組成員,如果把stpTest指向的動態分配內存看作一個整體,c就是一個長度可以動態變化的結構體成員,柔性一詞來源于此。c的長度為0,因此它不占用test的空間,同時stpTest->c就是“hello world”的首地址,不需要再使用(char *)(stpTest + 1)這么丑陋的代碼了。那個0個元素的數組沒有占用空間,而后我們可以進行變長操作了。這樣我們為結構體指針c分配了一塊內存。用stpTest->c[n]就能簡單地訪問可變長元素。
 
   當然,上面既然用malloc 函數分配了內存,肯定就需要用free 函數來釋放內存:
 
   free(stpTest);
 
   應當盡量使用標準形式,在非C99的場合,可以使用指針方法。需要說明的是:C89不支持這種東西,C99把它作為一種特例加入了標準。但是,C99所支持的是incomplete type,而不是zero array,形同int a[0];這種形式是非法的,C99 支持的形式是形同int a[];只不過有些編譯器把int a[0];作為非標準擴展來支持,而且在C99 發布之前已經有了這種非標準擴展了,C99 發布之后,有些編譯器把兩者合而為一了. www.qcwy123.com   托福答案
 
 
posted on 2014-02-08 15:48 HAOSOLA 閱讀(575) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
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>
            ●精品国产综合乱码久久久久| 国产欧美韩国高清| 亚洲日本久久| 亚洲精品视频免费在线观看| 欧美激情网站在线观看| 99v久久综合狠狠综合久久| 91久久久久久| 欧美喷潮久久久xxxxx| 亚洲视频在线观看一区| 亚洲自拍偷拍网址| 黑人巨大精品欧美一区二区| 欧美aa在线视频| 欧美日韩国产精品一卡| 亚洲欧美一区二区在线观看| 午夜日本精品| 亚洲精品一区久久久久久| 日韩网站免费观看| 韩日午夜在线资源一区二区| 欧美电影在线观看完整版| 欧美日韩在线一区| 久久久久久电影| 你懂的网址国产 欧美| 亚洲一区国产一区| 久久嫩草精品久久久久| 亚洲乱码国产乱码精品精| 亚洲图片欧美日产| 亚洲高清av| 亚洲视频在线观看免费| 在线成人亚洲| 亚洲欧美国产日韩天堂区| 亚洲福利视频免费观看| 亚洲视频axxx| 亚洲久久一区二区| 久久精品日产第一区二区| 一本色道久久综合亚洲精品婷婷| 午夜精品偷拍| 一区二区三区视频观看| 久久夜精品va视频免费观看| 亚洲视频在线观看免费| 免费日本视频一区| 久久久久欧美| 国产精品手机在线| 日韩亚洲视频在线| 最新亚洲激情| 久久久久国色av免费看影院| 午夜精品久久久久久99热软件| 麻豆freexxxx性91精品| 久久精品国产亚洲一区二区| 欧美日韩在线视频观看| 亚洲福利免费| 亚洲欧洲在线播放| 久久综合99re88久久爱| 久久er99精品| 国产欧美日韩精品丝袜高跟鞋 | 国产欧亚日韩视频| 日韩视频在线观看免费| 亚洲日本久久| 欧美成人免费大片| 亚洲第一毛片| 亚洲美女在线国产| 欧美激情区在线播放| 亚洲电影观看| 亚洲精品国产视频| 欧美精品亚洲一区二区在线播放| 欧美成人午夜免费视在线看片| 激情成人在线视频| 久久久久国产精品人| 久久亚洲精品中文字幕冲田杏梨 | 久久精品毛片| 久久一区二区精品| 亚洲高清影视| 欧美精品在欧美一区二区少妇| 亚洲高清不卡| 99精品免费| 欧美视频中文字幕| 亚洲欧美视频一区| 久久久久久91香蕉国产| 黄色一区二区在线| 欧美 日韩 国产一区二区在线视频 | 亚洲啪啪91| 欧美高清不卡| 在线综合+亚洲+欧美中文字幕| 亚洲无线视频| 国产区亚洲区欧美区| 久久久久国产精品一区| 六月婷婷一区| 亚洲精品在线一区二区| 欧美日韩免费观看一区二区三区| 日韩午夜视频在线观看| 亚洲欧美日韩直播| 狠狠久久综合婷婷不卡| 欧美高清视频一二三区| 亚洲天堂成人在线观看| 久久午夜av| 99成人精品| 国产乱码精品一区二区三区不卡| 久久久999| 亚洲精品日本| 久久精品日产第一区二区| 亚洲福利视频二区| 国产精品久久婷婷六月丁香| 欧美伊人久久大香线蕉综合69| 欧美高清在线一区二区| 亚洲在线中文字幕| 亚洲国产精品一区制服丝袜 | 久久久国产精品一区二区三区| 免费欧美在线| 欧美亚洲综合久久| 91久久精品一区二区三区| 国产精品久久久亚洲一区| 免费日本视频一区| 香蕉成人啪国产精品视频综合网| 亚洲国产日韩在线一区模特| 欧美怡红院视频| 一区二区久久久久久| 在线观看不卡| 国产网站欧美日韩免费精品在线观看 | 久久久国产视频91| 这里只有精品视频| 91久久精品网| 韩国v欧美v日本v亚洲v| 国产精品福利网站| 欧美激情四色 | 亚洲性av在线| 亚洲精品影院| 亚洲大片av| 免费永久网站黄欧美| 欧美制服丝袜| 午夜国产精品影院在线观看 | 99re8这里有精品热视频免费| 国模精品一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美va天堂在线| 免费成人在线观看视频| 久久人人97超碰国产公开结果| 亚洲欧美大片| 亚洲主播在线| 亚洲免费一级电影| 亚洲在线视频网站| 亚洲一区精品视频| 亚洲一区三区在线观看| 亚洲性感激情| 午夜伦理片一区| 欧美一区二区三区四区在线| 亚洲一级黄色片| 亚洲视频免费看| 亚洲欧美清纯在线制服| 亚洲一区二区不卡免费| 亚洲综合色激情五月| 午夜视频在线观看一区| 欧美一区二区三区日韩视频| 午夜视频一区在线观看| 欧美综合二区| 久久综合九色综合欧美就去吻| 久久欧美中文字幕| 欧美激情精品| 国产精品jizz在线观看美国| 国产精品久久久99| 国产一区二区高清| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久精品道一区二区三区| 久久久久国产一区二区三区四区 | 亚洲精品黄色| 亚洲一区视频在线| 久久爱91午夜羞羞| 欧美r片在线| 欧美性生交xxxxx久久久| 国产精品推荐精品| 激情亚洲网站| 一区二区三区四区精品| 欧美一级视频| 欧美电影在线观看| 一本色道88久久加勒比精品| 欧美一区激情视频在线观看| 麻豆av一区二区三区| 欧美午夜视频在线观看| 黄色综合网站| 正在播放欧美一区| 久久视频在线看| 日韩午夜激情电影| 久久国产精品久久久久久久久久 | 欧美—级a级欧美特级ar全黄| 国产精品播放| 亚洲黄色天堂| 久久精品国产在热久久 | 性感少妇一区| 亚洲狠狠婷婷| 欧美自拍偷拍午夜视频| 欧美日韩视频在线一区二区 | 能在线观看的日韩av| 一区二区三区高清| 久久婷婷人人澡人人喊人人爽| 欧美手机在线视频| 91久久中文| 久久伊人精品天天| 亚洲一区视频在线观看视频| 欧美.日韩.国产.一区.二区| 国产片一区二区| 亚洲欧美亚洲| 亚洲国产精品久久久久秋霞蜜臀|