【C语言提高28】多级指针
2015-12-06 11:04
417 查看
#include<stdlib.h> #include<stdio.h> #include<string.h> #include<ctype.h> //产生molloc内存 char**getMem61(int num) { int i = 0, j = 0; char** p2 = NULL; if (p2 == NULL) { return NULL; } p2 = (char**)malloc(sizeof(char*)*num); 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 getMem62(char***p2,int num) { int i = 0; char**tmp = NULL; if (p2 == NULL) { return -1; } tmp = (char**)malloc(sizeof(char*)*num); *p2 = tmp; 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 0; } //利用三级指针释放二级指针 void getMemFree62(char***p2, int num) { int i = 0; char**tmp = NULL; if (p2 == NULL) { return; } tmp = *p2; //释放所指向的内存空间 for (i = 0; i < num; i++) { free(tmp[i]); } free(tmp); *p2 = NULL;//把实参置为NULL } void main() { int i = 0, j = 0; char** p2 = NULL; char*tmp; char tmpbuf[100]; int num = 5; getMem62(&p2,num); for (i = 0; i < num; i++) { printf("p2:%s",p2[i]); } printf("\nhehhe"); system("pause"); return; }
相关文章推荐
- 【C语言提高27】二级指针三种内存模型总述
- 【C语言提高26】二级指针做输入的第三种内存模型:手工打造二维内存
- C++
- C中qsort的补局限和C++中sort的用法
- 用C++程序在excel表中添加批注时的注意事项
- 【C++】基础知识—引用和指针引用
- c++操作符优先级表格 + 记忆方法整理
- 【C语言提高25】二级指针做输入的第二种内存模型:二维数组
- C/C++中的位操作的技巧
- C++ primer cin.clear(istream::failbit) 重置失败 陷入死循环
- c++指针入门
- 指针学习心得与理解
- 指针学习心得与理解
- 从零开始学c语言教程
- c++实现的任意进制数转十进制数算法
- C语言成长学习题(三)
- C++11新特性之智能指针
- char 与 wchar_t 的互相转化
- C 标准库 abs 函数的实现
- B1048. 数字加密(20)