TOP

关于双指针的简单理解
2019-08-14 00:08:34 】 浏览:38
Tags:关于 指针 简单 理解

运行代码

 1 #include <iostream>
 2  
 3 void GetMemeory(char *p)
 4 {
 5     p = (char *)malloc(100);
 6 }
 7 void Test()
 8 {
 9     char *str = NULL;
10     GetMemeory(str);
11     strcpy(str, "Thunder");
12     strcat(str + 2, "Downloader");
13     printf(str);
14 }

运行结果

程序崩溃

程序解释

首先,函数为按值传递,所以p和str指向的是同一个NULL;

GetMemory函数执行完后,为p指向的空间增加了内存空间,但str仍然指向NULL;

要修改实参,就要传递实参的地址,因此需要传递二级指针,修改如下:

 1 void GetMemory(char **p){
 2     *p = (char *)malloc(100);
 3 }
 4  
 5 void Test(){
 6     char *str = NULL;
 7     GetMemory(&str);
 8     strcpy(str,"Thunder");
 9     strcat(str+2,"Downloader");
10     printf(str);
11 }

 

 


关于双指针的简单理解 https://www.cppentry.com/bencandy.php?fid=49&id=228524

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇论分治与归并思想 下一篇c++11分享