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的区别呢?说好的 ...
随机推荐
- 【读书笔记】iOS-GCD-Dispatch Source
一,Dispatch Source是BSD系内核惯有功能kqueue的包装. 参考资料:<Objective-C高级编程 iOS与OS X多线程和内存管理>
- iOS网络-06-监听Iphone的网络状态
使用系统的方法来监听网络状态 系统的方法是通过通知机制来实现网络状态的监听 实现网络状态监听的步骤 定义Reachability类型的成员变量来保存网络的状态 @property (nonatomic ...
- 推些C语言与算法书籍
c语言系统学习与进阶: 1. C primer plus C primer plus 作为一本被人推崇备至的 c 入门经典,C primer plus 绝非浪得虚名.应该 算得上 C 教材里最好的入门 ...
- linux下修改系统时间
一.查看时间: [root@localhost ~]# date2016年 11月 19日 星期六 12:46:37 CST 二.修改时间,修改系统时间 [root@localhost ~]# dat ...
- nim3取石子游戏 (威佐夫博弈)
http://www.cnblogs.com/jackge/archive/2013/04/22/3034968.html 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有 ...
- 换新 iPhone 前要做的 9 件事
iPhone 6 以及 iPhone 6 Plus 终于在众人的期盼下发布了,是不是很多朋友都跃跃欲试,想入手新的 iPhone 呢?若你手中持有旧款 iPhone 的话,其实更换成新机后,还有不少事 ...
- 《MySQL技术内幕——SQL编程》读书笔记(二)——数据类型
对数据类型的选择将影响与数据库交互的应用程序的性能. 1.通常来说,如果一个页内可以存放尽可能多的行,那么数据库的性能就越好,因此选择一个正确的数据类型至关重要. 2.另一方面,如果在数据库中创建表时 ...
- c#,关于Big Endian 和 Little Endian,以及转换类
Big Endian:最高字节在地址最低位,最低字节在地址最高位,依次排列. Little Endian:最低字节在最低位,最高字节在最高位,反序排列. 当在本地主机上,无需注意机器用的是Big En ...
- EasyUI ComboGrid 分页
一.使用场景 下拉框可以很方便地为我们提供选择功能,通过下拉框我们可以便捷地选择某个值,而不需要手动输入.在EasyUI中有ComboGrid与之对应.ComboGrid既可以当中下拉框来使用,又可以 ...
- 标准IO的缓冲问题
在看APU时,第8章进程时, #include <stdio.h> #include <unistd.h> ; char buf[] = "a write to st ...