关于双指针的简单理解

2019-08-16 07:58:59来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

关于双指针的简单理解

运行代码

 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.cnblogs.com/sxf1061700625/p/11320134.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:QT QcustomPlot的简单使用

下一篇:Qt实现表格树控件-自绘树节点虚线