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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

c/c++ 柔性數組

Posted on 2010-02-23 17:09 S.l.e!ep.¢% 閱讀(631) 評論(0)  編輯 收藏 引用 所屬分類: C++
c/c++ 柔性數組
2009-12-09 09:56
結構體變長的妙用——0個元素的數組

有時我們需要產生一個結構體,實現了一種可變長度的結構。如何來實現呢?
看這個結構體的定義:
typedef?struct?st_type
{
??? int?nCnt;
??? int?item[0];
}type_a;
(有些編譯器會報錯無法編譯可以改成:)
typedef?struct?st_type
{
??? int?nCnt;
??? int?item[];
}type_a;
這樣我們就可以定義一個可變長的結構,用sizeof(type_a)得到的只有4,就是sizeof(nCnt)=sizeof(int)那個0個元素的數組沒有占用空間,而后我們可以進行變長操作了。
C語言版:
??? type_a?*p?=?(type_a*)malloc(sizeof(type_a)+100*sizeof(int));
C++語言版:
??? type_a?*p?=?(type_a*)new?char[sizeof(type_a)+100*sizeof(int)];

這樣我們就產生了一個長為100的type_a類型的東西用p->item[n]就能簡單地訪問可變長元素,原理十分簡單,分配了比sizeof(type_a)多的內存后int?item[];就有了其意義了,它指向的是int?nCnt;后面的內容,是沒有內存需要的,而在分配時多分配的內存就可以由其來操控,是個十分好用的技巧。
而釋放同樣簡單:
C語言版:
??? free(p);
C++語言版:
??? delete?[]p;

其實這個叫靈活數組成員(fleible?array?member)C89不支持這種東西,C99把它作為一種特例加入了標準。但是,C99所支持的是incomplete?type,而不是zero?array,形同int?item[0];這種形式是非法的,C99支持的形式是形同int?item[];只不過有些編譯器把int?item[0];作為非標準擴展來支持,而且在C99發布之前已經有了這種非標準擴展了,C99發布之后,有些編譯器把兩者合而為一。

下面是C99中的相關內容:
6.7.2.1 Structure and union specifiers

As a special case, the last element of a structure with more than one named member may have

an incomplete array type; this is called a flexible array member. With two exceptions, the

flexible array member is ignored. First, the size of the structure shall be equal to the offset

of the last element of an otherwise identical structure that replaces the flexible array member

with an array of unspecified length.106) Second, when a . (or ->) operator has a left operand

that is (a pointer to) a structure with a flexible array member and the right operand names that

member, it behaves as if that member were replaced with the longest array (with the same element

type) that would not make the structure larger than the object being accessed; the offset of the

array shall remain that of the flexible array member, even if this would differ from that of the

replacement array. If this array would have no elements, it behaves as if it had one element but

the behavior is undefined if any attempt is made to access that element or to generate a pointer

one past it.
例如在VC++6里使用兩者之一都能通過編譯并且完成操作,而會產生warning C4200: nonstandard extension

used : zero-sized array in struct/union的警告消息。
而在DEVCPP里兩者同樣可以使用,并且不會有警告消息。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲影院免费观看| 久久久www成人免费精品| 亚洲视频每日更新| 欧美在线你懂的| 红桃视频一区| 欧美黑人在线观看| 一二三区精品福利视频| 欧美不卡在线| aa级大片欧美| 激情欧美日韩一区| 欧美国产一区二区| 午夜精品福利一区二区三区av| 亚洲欧美日韩国产精品| 国产三级精品三级| 国产精品久久久久久久久婷婷| 欧美专区在线观看| 亚洲欧美电影在线观看| 亚洲福利在线看| 久久夜色精品一区| 久久福利毛片| 久久久久国产精品一区| 亚洲一区二区三区成人在线视频精品| 国产亚洲综合在线| 国产一区二区在线免费观看 | 欧美成熟视频| 老司机免费视频一区二区| 午夜精品电影| 你懂的亚洲视频| 免费一级欧美片在线播放| 麻豆av福利av久久av| 欧美国产免费| 亚洲精品日日夜夜| 一区二区三区产品免费精品久久75| 亚洲国产精品福利| 99国产精品久久| 亚洲一区二区在线免费观看视频| 亚洲一品av免费观看| 久久久国产91| 欧美性开放视频| 国产永久精品大片wwwapp| 在线观看亚洲精品| 亚洲一区免费视频| 美乳少妇欧美精品| 99视频+国产日韩欧美| 中文av一区二区| 久久性色av| 在线综合亚洲欧美在线视频| 久久永久免费| 亚洲日本成人网| 欧美成人亚洲成人| 国产日韩精品在线观看| 国产目拍亚洲精品99久久精品| 国产综合在线看| 久久精品国产99国产精品| 另类专区欧美制服同性| 亚洲永久免费观看| 欧美福利视频在线| 久久久久国产精品一区二区| 欧美精品久久99| 国内精品久久久久久久影视麻豆 | 久久躁日日躁aaaaxxxx| 久久久久国色av免费观看性色| 亚洲成人自拍视频| 夜夜嗨av一区二区三区四区| 国产精品久久久久久影院8一贰佰| 久久av一区二区三区亚洲| 欧美成人第一页| 午夜久久美女| 欧美午夜精品理论片a级按摩| 亚洲网址在线| 欧美激情久久久| 久久综合久色欧美综合狠狠| 欧美日韩mp4| 亚洲国产精品传媒在线观看| 国产精品成人一区| 亚洲欧洲久久| 亚洲电影第三页| 欧美亚洲视频一区二区| 亚洲伦理在线免费看| 久久国产精品电影| 久久久久久久网站| 国产精品一区二区黑丝| 日韩亚洲国产欧美| 亚洲一级电影| 欧美日韩一区在线视频| 亚洲精品在线看| 国产日韩欧美二区| 久久超碰97中文字幕| 99精品视频一区| 免费久久99精品国产| 欧美在线亚洲综合一区| 在线观看亚洲| 亚洲激情中文1区| 欧美精品在线一区二区| 亚洲欧美成人| 欧美日韩成人综合天天影院| 久久精品人人做人人爽| 久久av红桃一区二区小说| 91久久极品少妇xxxxⅹ软件| 亚洲欧美卡通另类91av| 亚洲第一中文字幕在线观看| 亚洲综合成人在线| 亚洲午夜精品网| 欧美午夜不卡影院在线观看完整版免费 | 欧美国产激情二区三区| 欧美自拍偷拍午夜视频| 国产精品久久久99| 亚洲欧洲精品一区二区三区波多野1战4 | 国产精品sm| 亚洲一级二级| 久久精品一区二区三区中文字幕| 欧美日韩在线一区| 西西人体一区二区| 久久成人av少妇免费| 伊人蜜桃色噜噜激情综合| 国产伊人精品| 久久久精品国产一区二区三区 | 久久一区二区三区超碰国产精品| 国内精品免费午夜毛片| 免费一级欧美在线大片| 亚洲丰满在线| 亚洲三级色网| 国产精品视频精品| 欧美黑人一区二区三区| 亚洲欧美日韩中文播放| 亚洲国产欧美不卡在线观看| 亚洲综合日本| 亚洲高清在线| 国产一区二区三区电影在线观看| 欧美成人性生活| 欧美亚洲日本国产| 午夜精品美女久久久久av福利| 麻豆免费精品视频| 欧美中文字幕在线观看| 日韩亚洲综合在线| 亚洲第一中文字幕| 国产一区二区高清不卡| 国产精品久久久久三级| 欧美日韩一本到| 欧美人妖在线观看| 欧美激情aaaa| 欧美阿v一级看视频| 久久久99爱| 麻豆91精品91久久久的内涵| 麻豆精品在线视频| 免费观看在线综合| 你懂的一区二区| 欧美理论在线播放| 欧美日韩精品一区二区在线播放| 久久夜色精品国产噜噜av| 久久综合久久综合九色| 欧美aⅴ一区二区三区视频| 久久久综合免费视频| 欧美淫片网站| 另类酷文…触手系列精品集v1小说| 久久综合网hezyo| 欧美成人官网二区| 99视频一区| 久久深夜福利免费观看| 欧美激情一区二区在线 | 免费在线看成人av| 欧美另类在线播放| 国产欧美日韩一区二区三区在线 | 欧美香蕉视频| 亚洲精品乱码久久久久| 亚洲一区二区三区成人在线视频精品 | 欧美国产另类| 亚洲欧美国产视频| 欧美日本成人| 韩国精品主播一区二区在线观看| 亚洲激情图片小说视频| 一本色道久久综合精品竹菊| 久久免费视频这里只有精品| 欧美精品18videos性欧美| 国内自拍视频一区二区三区| 在线视频一区观看| 亚洲福利视频在线| 久久一区二区精品| 国产亚洲综合在线| 久久精品国产第一区二区三区最新章节 | 亚洲大胆人体视频| 久久久久久久91| 久久婷婷亚洲| 在线观看亚洲a| 亚洲国产小视频在线观看| 欧美韩日一区| 亚洲永久在线| 亚洲欧美日韩综合一区| 欧美成年人网| 一本色道久久综合一区| 中文在线资源观看网站视频免费不卡 | 在线成人av| 亚洲国产国产亚洲一二三| 欧美精品 日韩| 欧美中文在线视频| 免费观看国产成人| 欧美一区二区三区视频在线| 久色成人在线| 亚洲伊人伊色伊影伊综合网 | 欧美午夜大胆人体|