多级指针传入传出

Posted wanghao-boke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多级指针传入传出相关的知识,希望对你有一定的参考价值。

对于主函数的二级指针的分配赋值操作,调用函数时会用到三级指针来指向存储二级指针的内存地址

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int getMem(char ***p3,int num)

    int i = 0;
    char ***tmp = NULL;
    
    if(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);
        sprintf(tmp[i],"%d%d%d",i+1,i+1,i+1);
    
    
    *p3 = tmp;
    
    return 0;


int getMem_free(char ***p3,int num)

    int iRet = -1;
    int i = 0;
    char ***tmp = NULL;
    
    if(p3 == NULL)
    
        return;
    
    
    tmp = *p3;
    
    for(i = 0; i < num; i++)
    
        free(tmp[i]);
        iRet = 0;
    
    
    free(tmp);
    
    *p3 = NULL;
    return iRet;


int main()

    int iRet = 0;
    int i = 0, j = 0;
    char **p2 = NULL;
    int num = 5;
    char *tmp = NULL;
    
    getMem(&p2,num);
    
    for(i = 0; i < num; i++)
    
        printf("%s \n",p2[i]);
    
    
    iRet = getMem_free(&p2,num);
    if( 0 == iRet)
    
        printf("getMem_free success\n");
    
    else
    
        printf("getMem_free error\n");
    
    return 0;

 

以上是关于多级指针传入传出的主要内容,如果未能解决你的问题,请参考以下文章

C 语言二级指针案例 ( 多级指针内存释放问题 | 多级指针避免野指针 )

用于多级指针取消引用?

一级指针二级指针,或是多级指针访问

一级指针二级指针,或是多级指针访问

C++ 值传递指针传递引用传递详解

图解多级指针与“多维”数组