【发布时间】:2017-01-16 00:54:01
【问题描述】:
我试图将字符数组“p”传递给函数“func”并将其复制到函数内的另一个参数“arg”。但是,该数组没有被复制,虽然我能够修改“func”中“p”的内容并能够验证主函数中的更改,但“res”不会与值一起被复制从'p'。它打印空白。我不确定我犯了什么错误。
#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...
【问题讨论】: