C++可變長結構體

根據代碼來看很容易理解,下面就是實際的代碼。
變長結構體的核心思想就是在結構體的最后一個數據結構為一個指針,這個指針指向的是這個結構體的末尾數據數組的首地址。

#include <stdlib.h>

typedef struct stru_zmq_server_msg
{
    int deviceId;
    int msgCode;
}TS_ZMQ_SERVER_MSG;

typedef struct stru_tcp_server_msg
{
    int msgLength;
    int msgBodyLen;
    TS_ZMQ_SERVER_MSG zmqMsgBody[1];
}TS_TCP_SERVER_MSG;


int main()
{
    int len = sizeof(TS_TCP_SERVER_MSG) + sizeof(TS_ZMQ_SERVER_MSG) * 2;
    TS_TCP_SERVER_MSG* tdata = (TS_TCP_SERVER_MSG*)malloc(len);
    tdata->msgLength = len;
    tdata->msgBodyLen = 2;
    TS_ZMQ_SERVER_MSG* data = (TS_ZMQ_SERVER_MSG*)tdata->zmqMsgBody;

    data[0].deviceId = 100;
    data[0].msgCode = 1;
    data[1].deviceId = 101;
    data[1].msgCode = 2;
    free(tdata);
    return 0;
}

轉載文章
https://www.cnblogs.com/dangerman/archive/2012/12/16/2820825.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容