关于双指针的简单理解
发布日期:2021-05-10 04:41:39 浏览次数:22 分类:精选文章

本文共 518 字,大约阅读时间需要 1 分钟。

运行代码

#include 
void GetMemeory(char *p){ p = (char *)malloc(100);}void Test(){ char *str = NULL; GetMemeory(str); strcpy(str, "Thunder"); strcat(str + 2, "Downloader"); printf(str);}

运行结果

程序崩溃

程序解释

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

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

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

void GetMemory(char **p){    *p = (char *)malloc(100);} void Test(){    char *str = NULL;    GetMemory(&str);    strcpy(str,"Thunder");    strcat(str+2,"Downloader");    printf(str);}

 

 

上一篇:ESP32 OTA详解-中文翻译版
下一篇:pyinstaller打包出错numpy.core.multiarray failed to import

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月18日 06时04分45秒