亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 結(jié)構(gòu)中char[0]的疑惑 [打印本頁(yè)]

作者: nmzqzw    時(shí)間: 2011-05-27 11:11
標(biāo)題: 結(jié)構(gòu)中char[0]的疑惑
本帖最后由 nmzqzw 于 2011-05-27 11:14 編輯

經(jīng)?吹揭恍┙Y(jié)構(gòu)是這樣定義的,隨便舉個(gè)例子
typedef struct{
        char hostname[50];
        int nLen;
        char address[0];
}t_host;

測(cè)了一下,這個(gè) address并不占用結(jié)構(gòu)的空間,將來(lái)還可以做指針用,不是很清楚其中的奧秒,請(qǐng)高手給個(gè)明確的說(shuō)明.
作者: afa311    時(shí)間: 2011-05-27 11:17
貌似是變長(zhǎng)結(jié)構(gòu)體
作者: freebarque    時(shí)間: 2011-05-27 11:23
好處你自己已經(jīng)說(shuō)了啊,

沒(méi)有空間,白得了一個(gè)指針
作者: hellioncu    時(shí)間: 2011-05-27 12:28
實(shí)際要配合前面那個(gè)nLen使用
作者: angeltears    時(shí)間: 2011-05-27 12:28
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: file3    時(shí)間: 2011-05-27 12:56
數(shù)組是指針常量,是不能被賦值。所以,address是不能指向你想要的地方。

另這個(gè)東西不會(huì)是變長(zhǎng)結(jié)構(gòu)體吧。C99才支持變長(zhǎng)數(shù)組,這裡就變長(zhǎng)結(jié)構(gòu)體了。
作者: lyreopera    時(shí)間: 2011-05-27 13:20
零長(zhǎng)度數(shù)組,gcc的擴(kuò)展
作者: supermegaboy    時(shí)間: 2011-05-27 23:30
經(jīng)常看到一些結(jié)構(gòu)是這樣定義的,隨便舉個(gè)例子
typedef struct{
        char hostname[50];
        int nLen;
...
nmzqzw 發(fā)表于 2011-05-27 11:11



    char address[0];叫柔性數(shù)組成員,char[0]是一種非標(biāo)準(zhǔn)形式,C99支持的標(biāo)準(zhǔn)形式用的是不完整類型:char address[ ];柔性數(shù)組成員是這樣使用的:

  char *p = new char[ sizeof( t_host ) + sizeof( char ) * n ];

于是( ( t_host* )p )->address就是sizeof( char ) * n這一段內(nèi)存單元的首地址了。
作者: nmzqzw    時(shí)間: 2011-05-30 09:54
回復(fù) 8# supermegaboy


    多謝指點(diǎn)




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2