对于这个神秘的标题感到抱歉,我已经找到了答案,但找不到答案。无论如何,我试图将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 ++代码一样修改它?
答案 0 :(得分:6)
这就是你所追求的:
#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);
}