Я пытался передать массив символов «p» функции «func» и скопировал ее в другой аргумент «arg» внутри функции. Но массив не копируется, хотя я могу изменять содержимое «p» в «func» и проверять изменения в основной функции, «res» не копируется со значениями от 'р'. Он печатает пустой. Я не уверен, какую ошибку я делаю.C - Возвращаемый массив как аргумент функции
#include <stdio.h>
#include <stdlib.h>
void func(char *c, int size, char *res)
{
int i;
printf("Printing c in func...\n");
for(i=0;i<size;i++) {
printf("%c",c[i]);
}
printf("\n");
c[2] = 'j';
res = c;
}
int main(void)
{
char c[5]={'h','e','l','l','o'};
char *p,*arg;
int i, size = 5;
p=c;
arg = (char*)malloc(size);
func(p,size,arg);
printf("Printing p in main...\n");
for(i=0;i<size;i++) {
printf("%c",p[i]);
}
printf("\n");
printf("Printing arg in main...\n");
for(i=0;i<size;i++) {
printf("%c",arg[i]);
}
printf("\n");
return 0;
}
Выход:
Printing c in func...
hello
Printing p in main...
hejlo
Printing arg in main...
Спасибо. Затем, как изменения в массиве «p» остаются даже после выхода функции? – Gomu
@Gomu; Отредактировал ответ. – haccks