函数参数的传递问题
时间:2010-11-01 来源:xiayongchun
函数参数的传递问题(一级指针和二级指针)
程序1:void myMalloc(char *s)
{
s = (char *)malloc(100)
}
void main()
{
char *p = NULL;
myMalloc(p);
if(p)
{
free(p);
p = NULL;
}
}
程序2:void myMalloc(char **s)
{
*s = (char *)malloc(100);
}
void main()
{
char *p = NULL;
myMalloc(&p);
if(p)
{
free(p);
p = NULL;
}
}
先看两个简单的程序便于理解
#include <stdio.h>
void fun(int *p)
{
int b = 100;
p = &b;
}
void main()
{
int a = 10;
int *q = NULL;
q = &a;
printf("%d\n",*q);
fun(q);
printf("%d\n",*q);
return 0;
}
//输出地结果是 10
10
解释:void fun(int i)
{
i = 100;
} //退出函数,i值复原
void fun(int *p)
{
*p = 100;
}
void main()
{
int a = 10;
int *q = NULL;
q = &a;
printf("%d\n",*q);
fun(q);
printf("%d\n",*q);
return 0;
}
//结果是 10
100
解释:void fun(int *pi)
{
*pi = 100;
} //退出函数,pi指针不变,但是指向的内容发生了变化(这句话应该好好理解)
总结如下
动态内存的传递方法
1,函数返回值传递(注意不要返回局部栈指针)
2,二级指针传递
如果你明白了上面的内容可以访问
http://www.cppblog.com/yearner/archive/2008/05/16/50112.html
相关阅读 更多 +