设为首页 加入收藏

TOP

关于双指针的简单理解
2019-08-14 00:08:34 】 浏览:39
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 }

 

 

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目