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