繁体   English   中英

如何在C中模仿C ++“通过引用传递数组(指针)”?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM