zoukankan      html  css  js  c++  java
  • C提高_day03_玩转多级指针

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    
    char **getMem51(int num)
    {
        int i = 0;
        char **p2 = NULL;
        p2 = (char **)malloc(sizeof(char *) * num);
        if (p2 == NULL)
        {
            return NULL;
        }
    
        for (i=0; i<num; i++)
        {
            p2[i] = (char *)malloc(sizeof(char)  * 100  ); //char buf[100];
            sprintf(p2[i], "%d%d%d", i+1, i+1, i+1);
        }
        return p2;
    }
    
    int getMem52(char ***p3 , int num)
    {
        int i = 0;
        char **tmp = NULL;
    
        if (p3 == NULL)  //判断p3 而不是*p3.  p3指向的内存空间可以是NULL 
        {
            return -1;
        }
        
        tmp = (char **)malloc(sizeof(char *) * num);
        if (tmp == NULL)
        {
            return NULL;
        }
    
        for (i=0; i<num; i++)
        {
            tmp[i] = (char *)malloc(sizeof(char)  * 100  ); //char buf[100];
            sprintf(tmp[i], "%d%d%d", i+1, i+1, i+1);
        }
        *p3 = tmp; 
        //1 2
    
        return 0;
    }
    
    void getMem52_Free(char ***p3 , int num)
    {
        int i = 0;
        char **tmp = NULL;
    
        if (p3 == NULL)
        {
            return ;
        }
        tmp = *p3; 
    
        for (i=0; i<num; i++)
        {
            free(tmp[i]);
        }
        free(tmp);
         
        *p3 = NULL; //把实参赋值成null
    }
    
    void main()
    {
        int i = 0, j = 0;
        char **p2 = NULL;
        int num = 5;
    
        //p2 = getMem51(num);
    
        getMem52(&p2, num);
    
        for (i=0; i<num; i++)
        {
            printf("%s 
    ", p2[i]);
        }
    
        getMem52_Free(&p2, num);
        printf("hello...
    ");
        system("pause");
        return ;
    }
    Stay hungry,Stay foolish
  • 相关阅读:
    Android Studio Gradle 添加.so 支持文件
    poj 3270 更换使用
    linux通过使用mail发送电子邮件
    php 上传文件 $_FILES['']['type']的值
    浅谈Base64编码
    expect实现ssh自动登录
    C++ 多源码文件简单组织
    linux下修改hostid
    SQLite/嵌入式数据库
    类内数组声明,“类外”指定大小
  • 原文地址:https://www.cnblogs.com/zhesun/p/4976019.html
Copyright © 2011-2022 走看看