c语言二级指针练习
Published on 2022-07-08 14:39 in 暂未分类 with 萧海~

c语言二级指针练习

    char **generate_memory(int num)
    {
    // 循环控制变量
    int i = 0;
    // 声明二维指针
    char **p = NULL;
    // 在堆内存中 , 分配一块内存空间
    // 用于存储 num 个 一维指针
    // 每个 一维指针 指向一块内存空间
    p = (char **)malloc( sizeof(char*) * num );
    if(p == NULL)
    {
    return NULL;
    }
    // 遍历 二维指针 指向的多个 一维指针
    // 并为每个 一维指针 在堆内存中 分配 20 字节内存
    for(i = 0; i < num; i++)
    {
    // 为每个字符分配 20 字节空间
    p[i] = (char *)malloc(sizeof (char) * 20);
    // 向内存中写入 字符串 , 字符串内容是 i + 1
    // 注意是通过通配符拼装的字符串
    sprintf(p[i], "%d", i + 1);
    }
    return p;
    }
    void free_mem(char **p, int num){
    // 循环控制变量
    int i = 0;
    // 判定指针合法性
    if(p == NULL)
    {
    return;
    }
    // 释放内存
    // 先释放 num 个 一级指针
    for(i = 0; i < num; i++)
    {
    if(p[i] != NULL)
    {
    free(p[i]);
    p[i] = NULL;
    }
    }
    // 再释放 二级指针
    if(p != NULL)
    {
    free(p);
    }
    }
    posted @   萧海~  阅读(36)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
    · 单线程的Redis速度为什么快?
    · SQL Server 2025 AI相关能力初探
    · AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
    · 展开说说关于C#中ORM框架的用法!
    历史上的今天:
    2021-07-08 Qt QLineEdit、QCombox、QCompleter 实现模糊搜索
    点击右上角即可分享
    微信分享提示
    电磁波切换