我試圖將一個字符數組'p'傳遞給函數'func',並將其複製到函數內的另一個參數'arg'。但是,數組並沒有被複制,儘管我可以在'func'中修改'p'的內容並且能夠驗證主函數中的更改,'res'不會被複制從'p'。它打印空白。我不確定我犯了什麼錯誤。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