一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

結(jié)構(gòu)體零長度數(shù)組的作用

 昵稱23617 2007-03-29

在一些 C 語言編寫的代碼中,有時可以看到如下定義的結(jié)構(gòu):

typedef struct user_def
{
    char *
 name;
    int
 length;
    char bytes[0
];
} user_def_t
;

這個 bytes 是什么意思?我們知道 0 == sizeof(bytes),那么 bytes 僅僅是為了定義結(jié)構(gòu)的尾地址嗎?

不是的。這里的 bytes 是作為擴展數(shù)組用的。請看如下代碼:

int alloc_user_def_t(user_def_t * p, int length)
{
    p = (user_def_t)malloc(sizeof(user_def_t) +
 length);
    if (NULL ==
 p)
    {
        return -1
;
    }

    p->name =
 NULL;
    p->length =
 length;
    memset(p->bytes, 0
, length);
    return 0
;
}

是不是很酷?同樣,也可以把 name 域的值附在結(jié)構(gòu)后面:

int alloc_user_def_t(user_def_t * p, char * name, int length)
{
    p = (user_def_t)malloc(sizeof(user_def_t) + strlen(name) + length + 1);
    if (NULL == p)
    {
        return -1;
    }
    p->name = p + sizeof(user_def_t) + length;
    memcpy(p->name, name, strlen(name) + 1);   /* 別忘了‘\0‘ */
    p->length = length;
    memset(p->bytes, 0, length);
    return 0;
}

總結(jié):在某一結(jié)構(gòu)末尾如定義類似 char bytes[0] 的零長數(shù)組,表示該結(jié)構(gòu)不定長,可通過數(shù)組的方式進行擴展。結(jié)構(gòu)中必包含一個長度信息。結(jié)構(gòu)本身類似于一個信息頭。同時,此結(jié)構(gòu)只能通過堆方式分配內(nèi)存。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    殴美女美女大码性淫生活在线播放 | 国产精品一区二区三区欧美| 国产女优视频一区二区| 久久久精品区二区三区| 亚洲精品一区二区三区日韩| 亚洲国产婷婷六月丁香| 国产在线日韩精品欧美| 偷自拍亚洲欧美一区二页| 日本女优一色一伦一区二区三区 | 中文字幕高清不卡一区| 国产精品一区二区视频| 国产日韩精品欧美综合区| 国产在线小视频你懂的| 两性色午夜天堂免费视频| 欧美色婷婷综合狠狠爱| 欧美日韩综合综合久久久| 精品国产丝袜一区二区| 国产精品日本女优在线观看| 中文字幕亚洲精品在线播放| 粉嫩国产一区二区三区在线| 激情国产白嫩美女在线观看| 熟女体下毛荫荫黑森林自拍| 精品欧美日韩一区二区三区| 久久精品蜜桃一区二区av| 国产麻豆精品福利在线| 色婷婷国产熟妇人妻露脸| 国产欧美日韩精品成人专区| 成年女人下边潮喷毛片免费| 亚洲专区中文字幕在线| 免费观看在线午夜视频| 欧美91精品国产自产| 在线懂色一区二区三区精品| 亚洲深夜精品福利一区| 在线免费观看黄色美女| 久久精品国产一区久久久| 欧美午夜性刺激在线观看| 日韩成人动作片在线观看| 国产一区欧美午夜福利| 激情综合网俺也狠狠地| 老司机精品国产在线视频| 婷婷亚洲综合五月天麻豆|