/****************************
跨函数使用内存,动态实现
****************************/
#include<stdio.h>
#include<malloc.h>
void fun1 (int * q) //参数是一个指向int型变量的指针,是对主函数的指针变量p值的一份拷贝,
{ // fun1()中对这份拷贝的改变,不影响主函数中的p的指向,即p指针变量的值
q = (int *)malloc(4*sizeof(int));
}
void fun2 (int ** q) //参数是一个指向int型变量的指针的指针,主函数中调用fun2()时,其传递的
{ //是指针变量p的地址,*q就是p,所以会影响到主函数中p的指向
*q = (int *)malloc(4*sizeof(int));
}
int main()
{
int *p,i; //flag
fun1(p);
printf("%p/n",p);
// p[1] = 1; //p还是 flag 处定义的未初始化的指针变量(即野指针,变量中所存放的
// printf("%d/n",*(p+1)); // 地址为垃圾数) ,所以该两句运行时出错
fun2(&p);
printf("%p/n",p);
p[1] = 2;
printf("%d/n",*(p+1));
return 0;
}
跨函数使用内存,动态实现
最新推荐文章于 2024-09-04 08:42:39 发布