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

柔性數(shù)組結(jié)構(gòu)成員

C99中,結(jié)構(gòu)中的最后一個元素允許是未知大小的數(shù)組,這就叫做柔性數(shù)組成員,但結(jié)構(gòu)中的柔性數(shù)組成員前面必須至少一個其 他成員。柔性數(shù)組成員允許結(jié)構(gòu)中包含一個大小可變的數(shù)組。sizeof返回的這種結(jié)構(gòu)大小不包括柔性數(shù)組的內(nèi)存。包含柔性數(shù)組成員的結(jié)構(gòu)用malloc ()函數(shù)進行內(nèi)存的動態(tài)分配,并且分配的內(nèi)存應(yīng)該大于結(jié)構(gòu)的大小,以適應(yīng)柔性數(shù)組的預(yù)期大小。】 
C語言大全,“柔性數(shù)組成員”

【柔性數(shù)組結(jié)構(gòu)成員
  C99中,結(jié)構(gòu)中的最后一個元素允許是未知大小的數(shù)組,這就叫做柔性數(shù)組成員,但結(jié)構(gòu)中的柔性數(shù)組成員前面必須至少一個其 他成員。柔性數(shù)組成員允許結(jié)構(gòu)中包含一個大小可變的數(shù)組。sizeof返回的這種結(jié)構(gòu)大小不包括柔性數(shù)組的內(nèi)存。包含柔性數(shù)組成員的結(jié)構(gòu)用malloc ()函數(shù)進行內(nèi)存的動態(tài)分配,并且分配的內(nèi)存應(yīng)該大于結(jié)構(gòu)的大小,以適應(yīng)柔性數(shù)組的預(yù)期大小。】 
C語言大全,“柔性數(shù)組成員”

看看 C99 標準中 靈活數(shù)組成員:

結(jié)構(gòu)體變長的妙用——0個元素的數(shù)組
有時我們需要產(chǎn)生一個結(jié)構(gòu)體,實現(xiàn)了一種可變長度的結(jié)構(gòu)。如何來實現(xiàn)呢?
看這個結(jié)構(gòu)體的定義:
typedef struct st_type
{
int nCnt;
int item[0];
}type_a;
(有些編譯器會報錯無法編譯可以改成:)
typedef struct st_type
{
int nCnt;
int item[];
}type_a;
這樣我們就可以定義一個可變長的結(jié)構(gòu),用sizeof(type_a)得到的只有4,就是sizeof(nCnt)=sizeof(int)那

個0個元素的數(shù)組沒有占用空間,而后我們可以進行變長操作了。
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)];
這樣我們就產(chǎn)生了一個長為100的type_a類型的東西用p->item[n]就能簡單地訪問可變長元素,原理十分簡單

,分配了比sizeof(type_a)多的內(nèi)存后int item[];就有了其意義了,它指向的是int nCnt;后面的內(nèi)容,是沒

有內(nèi)存需要的,而在分配時多分配的內(nèi)存就可以由其來操控,是個十分好用的技巧。
而釋放同樣簡單:
C語言版:
free(p);
C++語言版:
delete []p;
其實這個叫靈活數(shù)組成員(fleible array member)C89不支持這種東西,C99把它作為一種特例加入了標準。但

是,C99所支持的是incomplete type,而不是zero array,形同int item[0];這種形式是非法的,C99支持的

形式是形同int item[];只不過有些編譯器把int item[0];作為非標準擴展來支持,而且在C99發(fā)布之前已經(jīng)有

了這種非標準擴展了,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里使用兩者之一都能通過編譯并且完成操作,而會產(chǎn)生warning C4200: nonstandard extension 

used : zero-sized array in struct/union的警告消息。
而在DEVCPP里兩者同樣可以使用,并且不會有警告消息。

posted on 2016-04-14 11:14 sheng 閱讀(497) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

<2016年4月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

統(tǒng)計

常用鏈接

留言簿(1)

隨筆檔案

收藏夾

同行

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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国产精品久久久久久久成人热| 亚洲欧洲免费视频| 欧美激情一区二区三区在线视频观看 | 亚洲精品一区中文| 欧美日韩精品在线视频| 亚洲欧美成人网| 午夜视频一区二区| 伊人男人综合视频网| 欧美激情视频在线播放| 欧美久久久久久蜜桃| 亚洲欧美国产三级| 久久精品国产96久久久香蕉| 伊人成人开心激情综合网| 亚洲高清视频在线观看| 欧美手机在线| 久久综合一区二区三区| 欧美美女操人视频| 欧美自拍丝袜亚洲| 欧美福利视频| 久久都是精品| 免费一区二区三区| 欧美一级久久久| 另类天堂视频在线观看| 中日韩高清电影网| 久久精品天堂| 中文成人激情娱乐网| 欧美在线地址| 亚洲丝袜av一区| 久久久久久91香蕉国产| 亚洲图片欧美午夜| 久久亚洲私人国产精品va| 亚洲无亚洲人成网站77777| 欧美综合国产精品久久丁香| 日韩视频精品| 久久精品视频va| 亚洲女女女同性video| 久久久精品国产99久久精品芒果| 一本久久a久久精品亚洲| 亚洲欧美日韩视频一区| 日韩系列在线| 久久久精品网| 久久精品视频免费播放| 欧美日本精品一区二区三区| 久久久夜色精品亚洲| 欧美午夜激情小视频| 欧美国产三区| 伊人婷婷久久| 久久激情久久| 久久精品国产精品 | 久久都是精品| 先锋影音一区二区三区| 欧美日韩和欧美的一区二区| 欧美成人精品1314www| 国内外成人免费激情在线视频网站 | 欧美sm视频| 国产主播精品在线| 午夜精品久久久久久| 亚洲欧美激情四射在线日 | 日韩写真视频在线观看| 猛干欧美女孩| 欧美福利电影在线观看| 一区二区三区在线观看欧美| 午夜天堂精品久久久久| 久久国产精品亚洲77777| 国产美女诱惑一区二区| 亚洲免费中文| 久久久久久精| 国产亚洲一区二区三区| 欧美亚洲色图校园春色| 久久久噜噜噜久久中文字免| 国产精品主播| 欧美在线三区| 蜜桃av综合| 亚洲精品欧美日韩专区| 欧美日韩第一页| 一区二区三区成人精品| 新狼窝色av性久久久久久| 国产精品中文字幕欧美| 久久不见久久见免费视频1| 久色婷婷小香蕉久久| 亚洲黄页视频免费观看| 欧美精品日韩一本| 国产精品99久久久久久人| 欧美一区二区三区婷婷月色 | 亚洲电影免费在线观看| 欧美风情在线观看| 一区二区三区四区五区精品视频| 亚洲视频福利| 国产一区二区电影在线观看| 久久免费高清| 日韩午夜视频在线观看| 欧美淫片网站| 亚洲人成网站在线观看播放| 欧美无砖砖区免费| 午夜精品亚洲| 亚洲激情视频| 欧美影院视频| 亚洲精品极品| 国产一级揄自揄精品视频| 免费亚洲婷婷| 亚洲欧美一区二区原创| 亚洲第一精品电影| 欧美在线观看一区二区| 亚洲国产三级网| 国产欧美日韩精品a在线观看| 卡一卡二国产精品| 亚洲女人天堂成人av在线| 欧美国产一区二区三区激情无套| 亚洲一区免费| 亚洲精品日韩欧美| 国产综合精品| 国产精品视频免费在线观看| 久久综合给合久久狠狠狠97色69| 亚洲视频在线播放| 亚洲国语精品自产拍在线观看| 欧美一区日韩一区| 一区二区三欧美| 亚洲高清网站| 国内精品视频在线播放| 欧美午夜在线一二页| 男女精品网站| 久久亚洲综合网| 欧美一二三区在线观看| 亚洲一品av免费观看| 亚洲欧洲一区二区三区| 欧美freesex8一10精品| 久久精品视频一| 欧美一区二区三区四区在线观看地址 | 久久久久青草大香线综合精品| 一区二区三区日韩精品| 亚洲欧洲一区二区三区久久| 欧美成人日韩| 欧美v亚洲v综合ⅴ国产v| 久久精品中文字幕一区二区三区| 亚洲欧美日韩国产成人| 亚洲一二三区精品| 亚洲视频福利| 亚洲综合国产| 亚洲欧美日韩成人| 亚洲欧美日韩久久精品| 亚洲一区二区三区在线| 亚洲一区免费网站| 亚洲一区国产视频| 午夜精品一区二区三区在线视 | 日韩视频免费| 99re8这里有精品热视频免费| 亚洲国产欧美一区二区三区同亚洲 | 欧美日韩一区二区三区在线| 欧美精品三级| 欧美三级日韩三级国产三级| 欧美视频精品在线| 国产精品一区久久久久| 国产情人节一区| 在线观看成人一级片| 亚洲国产老妈| 99视频国产精品免费观看| 一区二区三区欧美成人| 午夜精品久久久久久久久久久久久| 亚洲主播在线观看| 久久都是精品| 欧美黄色免费网站| 日韩视频永久免费| 亚洲欧美一区二区原创| 久久九九免费视频| 欧美精品91| 国产精品日韩欧美大师| 黄色日韩网站| 亚洲精品孕妇| 久久高清国产| 亚洲激精日韩激精欧美精品| 99视频精品全国免费| 欧美制服第一页| 欧美另类一区二区三区| 国产欧美日韩在线 | 欧美日韩精品一区二区| 国产精品免费看久久久香蕉| 韩国av一区二区三区| 99热精品在线| 久久九九精品99国产精品| 欧美mv日韩mv国产网站| 亚洲视频一区在线| 久久久水蜜桃av免费网站| 欧美视频日韩视频| 亚洲电影在线看| 欧美一区二区三区视频免费播放| 久热精品视频在线| 亚洲视频一区二区| 欧美成人精品不卡视频在线观看 | 欧美久久久久久久久| 国产一区二区三区四区| 99在线热播精品免费| 老色鬼久久亚洲一区二区 | 欧美韩国日本综合| 亚洲欧美激情视频| 欧美精选午夜久久久乱码6080| 国产亚洲精品成人av久久ww| 在线综合亚洲|