C 语言函数值传递和指针传递区别
1、#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//值传递时,并不改变实参的值
void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p, "hello world");
}
int main()
{
char *str=NULL;
getmemory(str);
printf("%s",str);
free(str);
return 0;
}
并且每次调用函数,都会泄露100大小内存空间

2、#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//实参地址作为参数传递,可以改变实参的值
void getmemory(char **p)
{
*p=(char *) malloc(100);
strcpy(*p,"hello world");
}
int main()
{
char *str=NULL;
getmemory(&str);
printf("%s\n",str);
free(str);
return 0;
}

阅读量:170
阅读量:104
阅读量:50
阅读量:111
阅读量:144