[英]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.