[英]How to mimic C++ “pass array(pointer) by reference” in C?
抱歉,标题含糊,我已经找到了答案,但找不到答案。 无论如何,我试图将一个char数组传递给一个函数并修改该数组内部的指针。 这是我在C ++中的意思的示例:
#include "stdio.h"
#include "string.h"
void fill(char*& destination, const char* const input, int size)
{
memcpy(destination, input, size);
destination += size;
}
void inner(const char* const string1, int size1)
{
const int size2 = 8;
char string2[size2] = "World!\n";
char output[20];
char* outputWriter = output;
fill(outputWriter, string1, size1);
fill(outputWriter, string2, size2);
printf(output);
}
int main()
{
inner("Hello ", 6);
}
哪个输出Hello World!
这是我在C中的尝试:
#include "stdio.h"
#include "string.h"
void fill(char** const destination, const char* const input, int size)
{
memcpy(destination, input, size);
*destination += size;
}
void inner(const char* const string1, int size1)
{
const int size2 = 8;
char string2[size2] = "World!\n";
char output[20];
char (*outputWriter)[20] = &output;
fill((char**)outputWriter, string1, size1);
fill((char**)outputWriter, string2, size2);
printf(output);
}
int main()
{
inner("Hello ", 6);
}
哪个输出_orld!
,投射效果不是很好。
将此类指针传递给函数以使其能够像C ++代码一样进行修改的正确方法是什么?
这是您所追求的:
#include "stdio.h"
#include "string.h"
void fill(char** destination, const char* const input, int size)
{
memcpy(*destination, input, size);
*destination += size;
}
void inner(const char* const string1, int size1)
{
const int size2 = 8;
char string2[size2] = "World!\n";
char output[20];
char* ptr = output;
fill(&ptr, string1, size1);
fill(&ptr, string2, size2);
puts(output);
}
int main()
{
inner("Hello ", 6);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.