首页 > 其他 > 详细

C提高_day03_玩转多级指针

时间:2015-11-18 22:58:26      阅读:264      评论:0      收藏:0      [点我收藏+]
#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 \n", p2[i]);
    }

    getMem52_Free(&p2, num);
    printf("hello...\n");
    system("pause");
    return ;
}

C提高_day03_玩转多级指针

原文:http://www.cnblogs.com/zhesun/p/4976019.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!