//三级指针的使用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> //三级指针做输出
int getmun(char ***pout/*out*/,int *num){
int ERRO_MSG = ;
if (pout==NULL)
{
ERRO_MSG = ;
printf("危险操作内存pout==NULL erro msg:%d", ERRO_MSG);
return ERRO_MSG;
}
if (num == NULL)
{
ERRO_MSG = ;
printf("危险操作内存num==NULL erro msg:%d", ERRO_MSG);
return ERRO_MSG;
}
int numx = ;
char **ptemp = (char **)malloc(sizeof(char *)*numx);
int i = ;
for (i = ; i < numx; i++)
{
ptemp[i] = (char *)malloc(sizeof(char)*);
char buf[] = { };
sprintf(buf, "第%d同志们大家好", i);
strcpy(ptemp[i], buf);
}
*pout = ptemp;
*num = numx;
return ERRO_MSG;
} //打印数组
int printfall(char **pin,int num){
int ERRO_MSG= , i = ;
if (pin==NULL)
{
ERRO_MSG = ;
printf("pin==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
for (i = ; i < num; i++)
{
if (pin[i] != NULL)
{
printf("%s\n", pin[i]);
}
else{
ERRO_MSG = ;
printf("数据录入错误! erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
}
return ERRO_MSG;
} //释放堆内存(三级指针做输入)
int freeall(char ***pin,int num){
int ERRO_MSG = , i = ;
if (pin==NULL)
{
ERRO_MSG = ;
printf("pin==NULL erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
char **tempp = *pin;//灵性代码,用一个变量接收一下
if (tempp == NULL)
{
ERRO_MSG = ;
printf("*pin==NULL 二维数组数据不可以为空 erro msg:%d\n", ERRO_MSG);
return ERRO_MSG;
}
for (i = ; i < num; i++)
{
if (tempp[i] != NULL)
{
free((*pin)[i]);
tempp[i] = NULL;
}
else{
ERRO_MSG = ;
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 = , i = ;
int rest= getmun(&p1, &num);
//打印p1的内容
if (rest==)
{
//打印数组
printfall(p1, num);
//释放内存
freeall(&p1,num);
printf("%p\n", p1);
} system("pause");
}

C语言 三级指针的应用的更多相关文章

  1. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  2. C语言07指针高级

    01内存四区 接口封装和设计思想引导 接口封装设计思想引导 Sckclient客户端api模型设计 第一套api函数 #ifndef _SCK_CLINT_H_ #define _SCK_CLINT_ ...

  3. C语言二级指针(指向指针的指针)

    转载:http://c.biancheng.net/cpp/html/85.html 指针可以指向一份普通类型的数据,例如 int.double.char 等,也可以指向一份指针类型的数据,例如 in ...

  4. Android JNI编程(四)——C语言多级指针、数组取值、从控制台输入数组

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:前面我们介绍了一级指针的相关概念和用发,今天我们就来说一说多级指针. 1 ...

  5. 浅谈c语言的指针

    对于非计算机专业的同学,c语言的指针往往就是老师的一句“指针不考“就带过了.c语言的指针号称是c语言的灵魂,是c语言中最精妙的部分. 指针本质上也是变量,也就是一段内存,只是他的特殊之处是他存储的数据 ...

  6. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  7. C语言二重指针与malloc

    (内容主要源于网上,只是加入了些自己的剖析) 假设有一个二重指针: char **p; 同时有一个指针数组 char *name[4]; 如何引用p呢? 首先我们有程序代码如下 #include &l ...

  8. C语言函数指针基础

    本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...

  9. 为什么C/C++语言使用指针

    这是参加面试时,面试官问的一道开放性题目. 问题是:为什么C/C++语言使用指针? 这个问题一问出来,直接被面试官秒杀了,面试官大神,你怎么不按套路出牌啊? 说好的malloc和new的区别呢?说好的 ...

随机推荐

  1. 操作集合的工具类:Collections

    Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作,还提供了将集合对象置为不可变.对集合对象实现同步控制等方法 ...

  2. 【读书笔记】iOS-简单的数据驱动程序

    一,效果图. 二,,工程文件如下图所示: 三,DataModel.h #import <Foundation/Foundation.h>   @interface DataModel : ...

  3. c语言中的部分字符串和字符函数

    // // main.c // homeWork1230 // // #include <stdio.h> #include <string.h> #include <c ...

  4. Linux学习书目

    Linux基础 1.<Linux与Unix Shell 编程指南> C语言基础 1.<C Primer Plus,5th Edition>[美]Stephen Prata著 2 ...

  5. 通过JAVA反射,调用未知类的类方法

    下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子 package com.togeek.mvntest; import java.lang.reflect.InvocationTarget ...

  6. 获取byte数组的实际使用长度

    背景:byte.length只能获取到初始化的byte数组长度,而不是实际使用的长度,因此想要获取到实际的使用长度只能靠其他方法实现. 方法一: public class ByteActualLeng ...

  7. [Weblogic]startWebLogic.cmd配置JAVA_OPTIONS无效的解决思路与方案

    事情背景: 由于某个项目原因,需要在2个域的startWebLogic.cmd文件加入如下设置 set JAVA_OPTIONS=%JAVA_OPTIONS% -javaagent:"pat ...

  8. [QTP/UFT12]无限延长试用期的方法

    1. 删除C:\ProgramData隐藏目录下的SafeNet Sentinel文件夹 2.运行QTP安装目录下的bin\instdemo.exe 3. 重新运行QTP/UFT 12后即可恢复30天 ...

  9. fastCGI与PHP-fpm

    fastCGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本,即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php.因此,如 ...

  10. 【API】短信通106端口验证短信的实现

    信息时代,无论是电商还是网络营(chuan)销(xiao)都希望得道更多的用户信息.所以很多的网站注册上用到了手机验证码功能.网上有很多的SMS接口提供商.在选择的时候无非就是考虑到1.发送速度:2. ...