#include <stdio.h>
#include <malloc.h>
//动态内存跨函数使用
void f(int ** q)
{
int j = 20;
printf("_______f函数里替换前输出___________\n");
printf("*q的值即*p的地址是%d\n",*q);
printf("**q的值即*p的值是%d\n",**q);
*q = (int * )malloc(sizeof(int));
**q = j;
printf("_______f函数里替换后输出___________\n");
printf("*q的值即*p的地址是%d\n",*q);
printf("**q的值即*p的值是%d\n",**q);
}
int main(void)
{
int i = 10;
int * p ;
p = &i;
printf("_______main函数调用f函数之前的输出________\n");
printf("i的地址是%d\n",&i);
printf("p的地址是%d\n",&p);
printf("*p的值是%d\n",*p);
printf("*p的地址是%d\n",&*p);
f(&p);
printf("_______main函数调用f函数之后的输出________\n");
printf("i的地址是%d\n",&i);
printf("p的地址是%d\n",&p);
printf("*p的值是%d\n",*p);
printf("*p的地址是%d\n",&*p);
return 0;
}输出结果:

微信公众号:

c语言指针跨函数使用内存
原文:http://blog.51cto.com/tdcqvip/2130061