我们都知道, 指针做函数参数的时候, 既可以做输入, 也可以做输出, 那怎么判断是做输入还是输出。
做输入还是输出都是相对主调函数而言的。
主调函数分配内存, 就是输入。
void func1(char *p) //p是主调函数分配好内存传入
{
char buf[] = "1254566";
strcpy(p, buf);
}
被调函数分配内存, 就是输出。
void func2(char **out) //out是被掉函数分配好内存, 并修改内容后传出
{
char *tmp = (char *)malloc(64);
strcpy(tmp, "xxxxyyyy");
*out = tmp;
}
测试程序
void test()
{
char *p = malloc(32);
func1(p);
printf("%s\n", p);
char *p2 = NULL;
func2(&p2);
printf("%s\n", p2);
//别忘了释放内存哦
free(p);
free(p2);
p = NULL;
p2 = NULL;
}
项目中遇到经常搞混, 写个博客记录下来