C语言 三级指针的应用
//三级指针的使用
#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语言 三级指针的应用的更多相关文章
- Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型
Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...
- C语言07指针高级
01内存四区 接口封装和设计思想引导 接口封装设计思想引导 Sckclient客户端api模型设计 第一套api函数 #ifndef _SCK_CLINT_H_ #define _SCK_CLINT_ ...
- C语言二级指针(指向指针的指针)
转载:http://c.biancheng.net/cpp/html/85.html 指针可以指向一份普通类型的数据,例如 int.double.char 等,也可以指向一份指针类型的数据,例如 in ...
- Android JNI编程(四)——C语言多级指针、数组取值、从控制台输入数组
版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:前面我们介绍了一级指针的相关概念和用发,今天我们就来说一说多级指针. 1 ...
- 浅谈c语言的指针
对于非计算机专业的同学,c语言的指针往往就是老师的一句“指针不考“就带过了.c语言的指针号称是c语言的灵魂,是c语言中最精妙的部分. 指针本质上也是变量,也就是一段内存,只是他的特殊之处是他存储的数据 ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- C语言二重指针与malloc
(内容主要源于网上,只是加入了些自己的剖析) 假设有一个二重指针: char **p; 同时有一个指针数组 char *name[4]; 如何引用p呢? 首先我们有程序代码如下 #include &l ...
- C语言函数指针基础
本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...
- 为什么C/C++语言使用指针
这是参加面试时,面试官问的一道开放性题目. 问题是:为什么C/C++语言使用指针? 这个问题一问出来,直接被面试官秒杀了,面试官大神,你怎么不按套路出牌啊? 说好的malloc和new的区别呢?说好的 ...
随机推荐
- 安卓开发--android library projects cannot be launched错误
最新因为学习,问技术友要了几个源代码,导入源代码的时候无法进行真机或者虚拟机测试. 原因:android library projects cannot be launched 百度了一下,解决方法很 ...
- Android 在外部存储读写文件
本文主要介绍android中如何在外部存储读写数据 sd卡的路径 sdcard:2.3之前的sd卡路径 mnt/sdcard:4.3之前的sd卡路径 storage/sdcard:4.3之后的sd卡路 ...
- 【原】iOS下KVO使用过程中的陷阱
KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应.网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里.这个 ...
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...
- java:String使用equals和==比较的区别
原文链接:http://www.cnblogs.com/tinyphp/p/3768214.html "=="操作符的作用 1.用于基本数据类型的比较 2.判断引用是否指向堆内存的 ...
- Objective-C之用C的字符来处理NSString相关的字符替换和拼接的问题
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- KVO的使用
KVO的使用 KVO是一种设计模式,名为观察者. addObserver:forKeyPath:options:context: 通知其他对象的方法,这个方法在NSObject中就已经申明了,也就是说 ...
- leangoo更换背景、设置颜色标签功能上线啦!
leangoo看板背景太单调?卡片标签想要添加多个?没有问题,Leangoo的本次更新就给大家带来了漂亮背景和实用的颜色标签设置,接下来就让我们一起来看看吧! 设置背景: 点击看板右上角个人头像图标按 ...
- 手动将自定制的WebPart部署到 SharePoint 2010 中
1.搭建好开发环境,建立webpart工程,写代码. 2.修改assembly.cs文件 在部署前,需要修改assembly文件,增加以下两句: using System.Security; [a ...
- Informatica Powercenter学习笔记
LOOKUP TRANSFORMATION的使用点评: LOOKUP基本用法不熟的话请参考下附属信息. 用法感受: 1 LOOKUP的作用跟我们以前在EXCEL的函数功能类似,就是隔表取值.优点就是用 ...