首页 > 编程语言 > 详细

C语言 三级指针的应用

时间:2016-05-16 17:16:06      阅读:174      评论:0      收藏:0      [点我收藏+]
//三级指针的使用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//三级指针做输出
int getmun(char ***pout/*out*/,int *num){
    int ERRO_MSG = 0;
    if (pout==NULL)
    {
        ERRO_MSG = 1;
        printf("危险操作内存pout==NULL erro msg:%d", ERRO_MSG);
        return ERRO_MSG;
    }
    if (num == NULL)
    {
        ERRO_MSG = 2;
        printf("危险操作内存num==NULL erro msg:%d", ERRO_MSG);
        return ERRO_MSG;
    }
    int numx = 5;
    char **ptemp = (char **)malloc(sizeof(char *)*numx);
    int i = 0;
    for (i = 0; i < numx; i++)
    {
        ptemp[i] = (char *)malloc(sizeof(char)*20);
        char buf[20] = { 0 };
        sprintf(buf, "第%d同志们大家好", i);
        strcpy(ptemp[i], buf);
    }
    *pout = ptemp;
    *num = numx;
    return ERRO_MSG;
}

//打印数组
int printfall(char **pin,int num){
    int ERRO_MSG= 0, i = 0;
    if (pin==NULL)
    {
        ERRO_MSG = 1;
        printf("pin==NULL erro msg:%d\n", ERRO_MSG);
        return ERRO_MSG;
    }
    for (i = 0; i < num; i++)
    {
        if (pin[i] != NULL)
        {
            printf("%s\n", pin[i]);
        }
        else{
            ERRO_MSG = 2;
            printf("数据录入错误! erro msg:%d\n", ERRO_MSG);
            return ERRO_MSG;
        }
    }
    return ERRO_MSG;
}

//释放堆内存(三级指针做输入)
int freeall(char ***pin,int num){
    int ERRO_MSG = 0, i = 0;
    if (pin==NULL)
    {
        ERRO_MSG = 1;
        printf("pin==NULL erro msg:%d\n", ERRO_MSG);
        return ERRO_MSG;
    }
    char **tempp = *pin;//灵性代码,用一个变量接收一下
    if (tempp == NULL)
    {
        ERRO_MSG = 1;
        printf("*pin==NULL 二维数组数据不可以为空 erro msg:%d\n", ERRO_MSG);
        return ERRO_MSG;
    }
    for (i = 0; i < num; i++)
    {
        if (tempp[i] != NULL)
        {
            free((*pin)[i]);
            tempp[i] = NULL;
        }
        else{
            ERRO_MSG = 2;
            printf("*pin==NULL 二维数组数据不可以为空 erro msg:%d\n", ERRO_MSG);
            return ERRO_MSG;
        }
    }
    free(tempp);
    tempp = NULL;
    *pin = NULL;
    return ERRO_MSG;
}

void main()
{
    char **p1 = NULL;
    int num = 0, i = 0;
    int rest= getmun(&p1, &num);
    //打印p1的内容
    if (rest==0)
    {
        //打印数组
        printfall(p1, num);
        //释放内存
        freeall(&p1,num);
        printf("%p\n", p1);
    }

    system("pause");
}

 

技术分享

 

C语言 三级指针的应用

原文:http://www.cnblogs.com/zhanggaofeng/p/5498218.html

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