C提高_day03_玩转多级指针
2015-11-18 22:01
363 查看
#include <stdlib.h> #include <string.h> #include <stdio.h> char **getMem51(int num) { int i = 0; char **p2 = NULL; p2 = (char **)malloc(sizeof(char *) * num); if (p2 == NULL) { return NULL; } for (i=0; i<num; i++) { p2[i] = (char *)malloc(sizeof(char) * 100 ); //char buf[100]; sprintf(p2[i], "%d%d%d", i+1, i+1, i+1); } return p2; } int getMem52(char ***p3 , int num) { int i = 0; char **tmp = NULL; if (p3 == NULL) //判断p3 而不是*p3. 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 ); //char buf[100]; sprintf(tmp[i], "%d%d%d", i+1, i+1, i+1); } *p3 = tmp; //1 2 return 0; } void getMem52_Free(char ***p3 , int num) { int i = 0; char **tmp = NULL; if (p3 == NULL) { return ; } tmp = *p3; for (i=0; i<num; i++) { free(tmp[i]); } free(tmp); *p3 = NULL; //把实参赋值成null } void main() { int i = 0, j = 0; char **p2 = NULL; int num = 5; //p2 = getMem51(num); getMem52(&p2, num); for (i=0; i<num; i++) { printf("%s \n", p2[i]); } getMem52_Free(&p2, num); printf("hello...\n"); system("pause"); return ; }
相关文章推荐
- Socket简单介绍(通过NSStream)
- sql 分页
- Asp.net加Sql Server写的留言板小例子
- 找出一组数中只出现一次的两个数,其他所有数都是成对出现的
- 进程与线程
- CentOS使用EPEL YUM源教程
- hdoj 1026 Ignatius and the Princess I【bfs&&路径输出】
- 每天一点matlab——字符分割
- linux文件权限
- HTML5新增标签1
- 如何查看windows系统是否被远程登录
- Leetcode常用的五大算法思想
- windows+ubuntu双系统安装简明教程
- IOS CoreMotion
- SQL学习:SQLCookBook源代码-mysql版本(1)
- swift post请求参数类型为json
- 练习PYTHON协程之GREENLET
- python之模块ftplib(实现ftp上传下载代码)
- aa
- iOS开发:苹果应用商店审核指南中文翻译