簡體   English   中英

C 通過引用傳遞結構

[英]C Passing struct by reference

我有以下結構,我想通過引用傳遞

typedef struct payload {
    char *payload;
    uint64_t payloadSize;
} Payload;

下面是該方法的實現。

void parsePayload(const char *originalPayload, const int payloadSize, Payload *source) {    
    source->payloadLength = 5;
    source->payload = malloc(5 * sizeof(char));
    memcpy((void *)source->payload, originalPayload, 5);
}

這里有主函數,我想通過修改指針內容的方法傳遞分配的對象

int main() {
    Payload *sourcePayload = malloc(sizeof(Payload));
    parsePayload("some random char", 16, &sourcePayload);
    Log("%d", sourcePayload->payloadSize);
}

但是,當我記錄 payloadSize 時,輸出似乎有問題。 請告知我做錯了什么。

提前致謝!

sourcePayload類型為Payload * ,所以&sourcePayload類型為Payload ** 這與函數的預期不兼容,您的編譯器應該警告您這一點。

由於sourcePayload已經有匹配函數參數的類型,直接傳遞即可。

parsePayload("some random char", 16, sourcePayload);

另外,請確保在main的末尾先free(sourcePayload->payload)然后free(sourcePayload)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM