A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tsc0000 中级黑马   /  2015-10-29 20:43  /  1153 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


#include <stdio.h>
#include <stdlib.h>

void fun1(int **e1)//二级指针作参数
{
        int b = 2;
        *e1 = (int *)malloc(sizeof(int)); //给指针分配空间
        **e1 = b;
}

void main()
{
        int *e1 = NULL;       
        fun1(&e1);               
        printf("%p\n",e1);               
        printf("%d\n",*e1);
}
//上面的e1指针可以正常分配空间,但是如果fun1() 函数只是单纯的将指针作为参数传递过去,像这样int fun1(*e);,那么e1 是不会被正确分配空间的,原因 是在fun1()结束之后e被释放掉了,面它所分配的空间还在,但是没有指针指向它,所以这就出现了memory leak 问题。
//函数结束之后被
1.指针作为形参时,如果只需要改变指针指向的值,可以使用一级指针,如果需要改变指针本身的地址
,则需要使用二级指针,相当于改变的是一级指针指向的值。
2.
指针作为形参时,指针指向的内容变化是可以带回的,指针地址的变化是不可带回的,即指针作为参
数,其地址不可改变,否则形参就无法传回实参的值。



1 个回复

倒序浏览
自己顶一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马