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

S.l.e!ep.¢%

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

c/c++ 柔性數(shù)組

Posted on 2010-02-23 17:09 S.l.e!ep.¢% 閱讀(634) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++
c/c++ 柔性數(shù)組
2009-12-09 09:56
結(jié)構(gòu)體變長(zhǎng)的妙用——0個(gè)元素的數(shù)組

有時(shí)我們需要產(chǎn)生一個(gè)結(jié)構(gòu)體,實(shí)現(xiàn)了一種可變長(zhǎng)度的結(jié)構(gòu)。如何來(lái)實(shí)現(xiàn)呢?
看這個(gè)結(jié)構(gòu)體的定義:
typedef?struct?st_type
{
??? int?nCnt;
??? int?item[0];
}type_a;
(有些編譯器會(huì)報(bào)錯(cuò)無(wú)法編譯可以改成:)
typedef?struct?st_type
{
??? int?nCnt;
??? int?item[];
}type_a;
這樣我們就可以定義一個(gè)可變長(zhǎng)的結(jié)構(gòu),用sizeof(type_a)得到的只有4,就是sizeof(nCnt)=sizeof(int)那個(gè)0個(gè)元素的數(shù)組沒(méi)有占用空間,而后我們可以進(jìn)行變長(zhǎng)操作了。
C語(yǔ)言版:
??? type_a?*p?=?(type_a*)malloc(sizeof(type_a)+100*sizeof(int));
C++語(yǔ)言版:
??? type_a?*p?=?(type_a*)new?char[sizeof(type_a)+100*sizeof(int)];

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

其實(shí)這個(gè)叫靈活數(shù)組成員(fleible?array?member)C89不支持這種東西,C99把它作為一種特例加入了標(biāo)準(zhǔn)。但是,C99所支持的是incomplete?type,而不是zero?array,形同int?item[0];這種形式是非法的,C99支持的形式是形同int?item[];只不過(guò)有些編譯器把int?item[0];作為非標(biāo)準(zhǔn)擴(kuò)展來(lái)支持,而且在C99發(fā)布之前已經(jīng)有了這種非標(biāo)準(zhǔn)擴(kuò)展了,C99發(fā)布之后,有些編譯器把兩者合而為一。

下面是C99中的相關(guān)內(nèi)容:
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里使用兩者之一都能通過(guò)編譯并且完成操作,而會(huì)產(chǎn)生warning C4200: nonstandard extension

used : zero-sized array in struct/union的警告消息。
而在DEVCPP里兩者同樣可以使用,并且不會(huì)有警告消息。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99精品热6080yy久久| 一区二区电影免费观看| 欧美成年人视频| 久久久久久国产精品mv| 国产亚洲福利| 欧美aaaaaaaa牛牛影院| 久久综合久久综合九色| 亚洲午夜激情免费视频| 久久国产精品亚洲va麻豆| 亚洲欧美精品一区| 国产亚洲精品久久飘花| 久久综合九色综合久99| 快射av在线播放一区| 日韩一二三区视频| 久久精品国产一区二区三区| 欧美二区不卡| 亚洲桃色在线一区| 午夜精品久久久久久99热软件| 国内精品**久久毛片app| 男女av一区三区二区色多| 欧美高清你懂得| 亚洲欧美日韩在线播放| 久久国产精品久久久久久| 亚洲大胆人体视频| 亚洲手机成人高清视频| 一区二区三区无毛| 日韩午夜免费| 一区二区三区在线不卡| 日韩视频专区| 狠狠久久婷婷| 一区二区三区国产精华| 狠狠色狠狠色综合系列| 亚洲精品影院在线观看| 国产无遮挡一区二区三区毛片日本| 欧美丰满少妇xxxbbb| 国产精品久久久久毛片大屁完整版 | 久久综合中文| 欧美日韩综合网| 欧美成人综合一区| 国产精品一页| 亚洲日本一区二区| 国产一区二区三区免费在线观看| 亚洲成色777777女色窝| 亚洲激情av在线| 国产日韩一区欧美| 韩国在线视频一区| 在线观看日韩av先锋影音电影院| 日韩系列在线| 久久精品二区亚洲w码| 久久成人av少妇免费| 亚洲手机成人高清视频| 免费观看久久久4p| 久久精品一区二区| 国产精品久久久久久久久借妻 | 亚洲激情视频在线观看| 精品成人在线观看| 亚洲在线视频观看| 亚洲香蕉伊综合在人在线视看| 免费视频一区| 农村妇女精品| 精品999成人| 久久精品国产69国产精品亚洲| 性伦欧美刺激片在线观看| 欧美三级在线播放| 99riav久久精品riav| 亚洲免费av片| 欧美精品在线视频观看| 亚洲激情精品| 亚洲美洲欧洲综合国产一区| 老牛影视一区二区三区| 欧美多人爱爱视频网站| 亚洲国产天堂网精品网站| 久久亚洲美女| 欧美大片18| 亚洲欧洲日本在线| 欧美高清日韩| 99视频在线观看一区三区| 亚洲深夜福利视频| 欧美日韩精品综合在线| 日韩午夜剧场| 欧美在线高清| 在线精品国产欧美| 欧美大片一区| 亚洲美女av网站| 香港久久久电影| 激情久久影院| 欧美成人午夜激情视频| 亚洲精品视频中文字幕| 午夜精品久久久久99热蜜桃导演| 国产精品爽爽ⅴa在线观看| 亚洲欧美日韩在线高清直播| 久久久久久精| 亚洲美女视频| 国产精品有限公司| 久久天天躁狠狠躁夜夜av| 亚洲激情视频在线播放| 欧美亚洲在线播放| 亚洲电影在线看| 欧美日韩精品一区二区天天拍小说| 一区二区三区日韩精品视频| 久久精品99无色码中文字幕| 亚洲国产日韩欧美在线动漫| 欧美日韩一区二区视频在线 | 久久尤物视频| 亚洲毛片播放| 亚洲精品少妇30p| 欧美剧在线观看| 亚洲欧美日韩专区| 亚洲国产成人精品久久| 亚洲欧美日韩爽爽影院| 在线看欧美日韩| 国产欧美另类| 欧美乱大交xxxxx| 欧美综合激情网| aa日韩免费精品视频一| 免费h精品视频在线播放| 亚洲尤物在线视频观看| 亚洲欧洲精品一区| 激情欧美一区二区三区| 国产午夜精品一区理论片飘花| 99精品国产在热久久下载| 久久综合国产精品| 午夜影院日韩| 99精品热视频| 亚洲国产精品va在看黑人| 国产欧美在线视频| 国产精品成人一区二区三区夜夜夜| 久久一区二区精品| 国产精品久久久久久久一区探花| 日韩视频三区| 亚洲高清免费在线| 免费永久网站黄欧美| 久久精品免费| 欧美一区二区三区在| 亚洲一区二区三区视频| 亚洲精品一级| 亚洲人成免费| 欧美在线观看www| 精品999在线观看| 国产日本亚洲高清| 国产精品露脸自拍| 欧美日韩中文精品| 欧美日韩精品免费观看视频| 欧美激情视频在线免费观看 欧美视频免费一| 久久se精品一区精品二区| 午夜视频久久久久久| 亚洲制服欧美中文字幕中文字幕| 亚洲一区欧美一区| 亚洲精品欧美专区| 亚洲精品婷婷| 99精品视频免费全部在线| 亚洲精品久久久久久久久| 亚洲黄色在线观看| 亚洲精选在线| 这里只有精品电影| 亚洲欧美精品在线观看| 欧美日韩三级在线| 久久精品成人欧美大片古装| 久久黄色小说| 久久综合国产精品台湾中文娱乐网| 久久久久国色av免费看影院| 噜噜噜噜噜久久久久久91| 蜜臀av性久久久久蜜臀aⅴ| 免费日本视频一区| 欧美另类女人| 国产精品亚洲成人| 亚洲美女av黄| 亚洲无线视频| 久久精品亚洲一区二区三区浴池| 久久男女视频| 亚洲欧洲在线一区| 亚洲一区二区三区精品在线| 欧美在线欧美在线| 欧美激情性爽国产精品17p| 欧美少妇一区| 狠狠色综合色区| 久久国产日韩| 午夜精品婷婷| 免费日韩视频| 亚洲理伦电影| 久久gogo国模啪啪人体图| 欧美精品性视频| 国产日韩精品一区二区浪潮av| 在线播放国产一区中文字幕剧情欧美 | 一区二区三区成人| 久久精品国内一区二区三区| 欧美黄色影院| 一区二区在线观看视频| 9久草视频在线视频精品| 亚洲欧美三级伦理| 欧美激情一二三区| 亚洲在线国产日韩欧美| 欧美**人妖| 国产一区二区三区高清播放| 日韩视频永久免费| 久久天堂av综合合色| 99精品国产福利在线观看免费| 久久精品女人天堂| 国产精品视频1区| 99精品欧美|