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

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>
            午夜亚洲视频| 久久久一区二区| 国产精品啊啊啊| 亚洲午夜一区| 午夜精品999| 在线精品一区二区| 91久久黄色| 国产精品免费视频xxxx| 久久成人精品| 久久视频在线看| 夜夜精品视频| 欧美在线|欧美| 亚洲电影在线看| 一本色道久久综合亚洲精品不卡| 国产精品久久久久一区二区三区共| 久久国产精品免费一区| 六十路精品视频| 亚洲欧美激情在线视频| 久久久xxx| 正在播放欧美一区| 久久电影一区| 亚洲无线观看| 久久久综合精品| 亚洲免费影院| 欧美大片免费| 久久婷婷麻豆| 国产精品扒开腿爽爽爽视频| 欧美.www| 国产农村妇女精品一二区| 亚洲动漫精品| 黄色欧美日韩| 亚洲一区三区电影在线观看| 亚洲成人在线观看视频| 亚洲欧美日韩综合| 一区二区三区日韩欧美精品| 久久免费视频观看| 久久成人在线| 国产精品成人一区二区三区夜夜夜| 免费在线一区二区| 国产欧美二区| 亚洲视频在线一区观看| 亚洲精品久久久久中文字幕欢迎你| 性视频1819p久久| 亚洲综合视频在线| 欧美日韩国产成人精品| 亚洲电影第1页| 在线播放豆国产99亚洲| 欧美专区日韩专区| 欧美一区二区啪啪| 国产精品美女久久久免费| 亚洲精品欧洲精品| 99国产精品99久久久久久粉嫩| 久久亚洲精选| 免费亚洲电影在线观看| 黄色av成人| 久久激情五月婷婷| 久久亚洲一区二区| 精品成人一区| 久久精品综合一区| 鲁大师成人一区二区三区| 国产亚洲综合在线| 久久福利电影| 久久综合色综合88| 亚洲黄色成人网| 免费h精品视频在线播放| 亚洲电影下载| 9久草视频在线视频精品| 欧美日韩精品国产| 在线视频欧美精品| 欧美一级大片在线免费观看| 国产日韩精品在线播放| 久久国产精品一区二区三区四区| 久久婷婷激情| 亚洲精品乱码久久久久久黑人| 欧美精品日韩一本| 一二三区精品| 久久久女女女女999久久| 在线播放日韩| 欧美日韩精品一区视频| 一区二区日韩精品| 久久精品国产欧美亚洲人人爽| 国内自拍一区| 欧美精品一卡| 亚洲欧美另类在线观看| 免费观看成人网| 国产精品99久久99久久久二8 | 女女同性女同一区二区三区91| 在线欧美福利| 欧美日韩亚洲一区二区三区在线| 亚洲一区二区三区高清| 久久综合五月天婷婷伊人| 亚洲国产精品久久久久秋霞蜜臀 | 在线一区亚洲| 国产一区二区三区四区五区美女| 久久亚洲不卡| 亚洲性图久久| 亚洲风情亚aⅴ在线发布| 亚洲天堂视频在线观看| 国产日韩精品在线播放| 欧美成人中文字幕| 亚洲一二三区在线| 欧美高清在线视频| 欧美伊人久久| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 狠狠久久婷婷| 欧美视频在线观看一区二区| 久久精品国产视频| 亚洲色图自拍| 亚洲人成绝费网站色www| 久久久精品久久久久| 99精品免费| 亚洲电影观看| 国语自产精品视频在线看抢先版结局 | 日韩一区二区福利| 老司机一区二区三区| 亚洲欧美国产精品专区久久| 亚洲国产精品福利| 国产一区二区黄色| 国产精品久线观看视频| 欧美精品尤物在线| 免费成人黄色| 久久嫩草精品久久久久| 欧美在线一级视频| 亚洲欧美日韩国产一区二区三区 | 欧美中文字幕第一页| 亚洲无亚洲人成网站77777| 亚洲国产一区二区三区青草影视| 久久免费午夜影院| 久久久久免费视频| 久久福利毛片| 久久激情五月激情| 欧美一区二区高清| 欧美在线一级视频| 欧美在线观看一区二区| 欧美在线啊v| 欧美中文字幕在线观看| 久久se精品一区二区| 久久不射2019中文字幕| 久久av免费一区| 久久精品国产精品| 久久精品夜色噜噜亚洲aⅴ| 久久成人免费网| 久久久久久国产精品mv| 久久最新视频| 欧美电影免费| 亚洲精品乱码| 中国日韩欧美久久久久久久久| 亚洲图片在线观看| 亚洲欧美精品在线观看| 欧美一级视频精品观看| 久久国产精品免费一区| 久久夜色精品一区| 欧美成人午夜激情视频| 欧美日本一区二区三区| 欧美亚一区二区| 国产欧美日韩免费| 在线播放不卡| 亚洲美女诱惑| 亚洲女与黑人做爰| 欧美在线在线| 欧美国产精品劲爆| 9l视频自拍蝌蚪9l视频成人| 亚洲性视频网站| 久久久国产精品一区| 欧美激情第二页| 国产精品久久精品日日| 一区免费观看| 亚洲视频在线一区| 久久岛国电影| 亚洲人被黑人高潮完整版| 亚洲欧美日本伦理| 麻豆国产精品777777在线| 欧美午夜电影在线观看| 精品成人在线| 亚洲欧美成人一区二区三区| 久久夜色精品国产欧美乱极品| 91久久久久久久久久久久久| 亚洲一区中文字幕在线观看| 麻豆视频一区二区| 国产乱码精品一区二区三| 最新日韩中文字幕| 久久国产精品网站| 亚洲六月丁香色婷婷综合久久| 午夜欧美精品| 欧美视频一区二区三区在线观看 | 亚洲精品日本| 久久免费视频网站| 一区二区三区高清| 另类春色校园亚洲| 国产日韩一区二区三区在线播放| 99热精品在线观看| 牛牛影视久久网| 午夜亚洲伦理| 国产精品你懂的| 一区二区欧美日韩| 欧美激情a∨在线视频播放| 西瓜成人精品人成网站| 国产精品swag| 日韩亚洲欧美高清| 欧美黄色影院|