繁体   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