数据结构 二叉树的创建 关于二级指针的问题
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");
}
我们传的参数是一级指针。把指针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");
}
相关文章推荐
- 这是我参考网上编写的一道数据结构关于二叉树求其子树是否指针或者线索,及其对应得值,但是我运行结果却是有点问题,希望高手帮指教下!
- 关于链表、树等数据结构中常见的二级指针
- 关于二叉树创建时遇到的问题的解决
- 关于创建对象数组的引用数据类型空指针异常问题
- 关于二叉树的创建、遍历等问题
- 求解一个简单的创建单链表的问题为什么用二级指针 ?
- 关于C的二级指针的问题
- C语言-二叉树-创建问题:指针的指针
- 关于结构体二级指针引用时必须加括号的问题 (*L)->next,而不是*L->next
- 二级指针的使用——二叉树的创建
- 关于C++异常抛出指针问题的探讨
- 关于用c生成的dll在使用其他供应商的工具创建可执行模块时遇到的一些问题
- 关于解决CommunityServer使用中文名字注册自动创建博客和相册的问题
- 创建直线的问题 关于数组的问题
- 关于用Create创建CEdit时有黑边的问题
- 关于字符指针和字符数组的小问题
- 关于线程创建的问题
- 关于数据结构导出的问题
- .NET进期综合---缓存/关于跨页面值传递/页面设置CSS/用户自定义控件/fileupload的路径问题/dropdown二级联动的数据库设计
- 关于未能创建 Mutex 问题的解决