您的位置:首页 > 理论基础 > 数据结构算法

数据结构 二叉树的创建 关于二级指针的问题

2016-12-19 21:54 411 查看
/*对于例题1.

我们传的参数是一级指针。把指针p传送给pt.

此时pt和p都指向同一块内存单元。他们都指向空指针。

二这行代码pt=(char*)malloc(strlen("double shuai"+1));

为pt重新分配了一块内存单元,pt指向长度为strlen("double shuai"+1)的内存单元。

但是我们需要注意的是,p依然指向NULL.我们都知道的是,新参是局部变量。

当然退出的时候,会自动释放pt指针。但是我们就无法释放动态分配的内存单元,造成了内存单元泄露。

  */

/*#include <stdio.h>

#include <malloc.h>

#include <string.h>

void get_value1(char*);

int main(void)

{
char *p=NULL;
get_value1(p);
if(p==NULL)
printf("p指针isNULL!\n");
else
printf("%s\n",*p);

return 0;

}

void get_value1(char* pt)

{
pt=(char*)malloc(strlen("double shuai"+1));
strcpy(pt,"double shuai");

return ;

}*/

//例题2.我们进行一下修改就好了.我们这次函数返回的是一个指针。返回的时候,

//我们发现p也指向了动态分配的一块内存。所以当然可以输出了double shuai

/*#include <stdio.h>

#include <malloc.h>

#include <string.h>

char* get_value2();

int main(void)

{
char *p=NULL;
p=get_value2();
if(p==NULL)
printf("p指针is NULL!\n");
else
printf("%s\n",p);

return 0;

}

char* get_value2()

{
char *pt;
pt=(char*)malloc(strlen("double shuai"+1));
strcpy(pt,"double shuai");

return pt;

}*/

/*对于例题3.

我们在此进行一下不返回指针函数的写法。我们需要搞明白的。才能使在mian函数

的指针指向在子函数里动态分配的内存。这时候,我们就要出现了今天的二级指针啦

我们这次传过去的是一个指针的  地址 。我们再来看看子函数,get_value3(char* *pt)。这里pt

是二级指针。*pt=(char*)malloc(strlen("double shuai"+1));这时候,*pt就是p了。那么就可以使p也指向了动态分配的

的内存单元。*/

#include <stdio.h>

#include <malloc.h>

#include <string.h>

void get_value3(char**);

int main(void)

{
char *p=NULL;
get_value3(&p);
if(p==NULL)
printf("p指针is NULL!\n");
else
printf("%s\n",p);

return 0;

}

void get_value3(char* *pt)

{

*pt=(char*)malloc(strlen("double shuai"+1));
strcpy(*pt,"double shuai");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: