【C语言提高26】二级指针做输入的第三种内存模型:手工打造二维内存
来源:互联网 发布:js获取某个div的高度 编辑:程序博客网 时间:2024/04/29 21:44
打印 排序:
//自己打造内存空间void main(){int i = 0,j=0;char** p2 = NULL;char*tmp;char tmpbuf[100];int num = 5;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);//向内存空间中打印数据}//打印for (i = 0; i < num; i++){printf("%s\n",p2[i]);}//排序//交换指针指向for (i = 0; i < num; i++){for (j = i + 1; j < num;j++){if (strcmp(p2[i],p2[j])>0){tmp = p2[i];p2[i] = p2[j];p2[j] = tmp; }}}//交换内存块的数据for (i = 0; i < num; i++){for (j = i + 1; j < num; j++){if (strcmp(p2[i], p2[j])>0){strcmp(tmpbuf,p2[i]);strcmp(p2[i],p2[j]);strcmp(p2[j],tmpbuf);}}}//释放内存 先申请的后释放for (i = 0; i < num; i++){if (p2[i] != NULL){free(p2[i]);p2[i] = NULL;}}if (p2 != NULL){free(p2);p2 = NULL;}printf("\nhehhe");system("pause");return;}
封装成函数:
//产生molloc内存char**getMem(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;}//打印void printMyArray03(char**myArray, int num){int i = 0;for (i = 0; i < num; i++){printf("%s\n", myArray[i]);// printf("%s\n", *(myArray+i));}}//排序 交换指针void sortMyArray03(char**myArray, int num){int i = 0, j = 0;char*tmp = NULL;for (i = 0; i < num; i++){for (j = i + 1; j < num; j++){if (strcmp(myArray[i], myArray[j]) > 0)//前面的大 交换 {//交换的指针指向tmp = myArray[i]; //注意 交换的是数组元素 交换的是指针的值 //改变指针的指向myArray[i] = myArray[j];myArray[j] = tmp;}}}}//释放void getMem03_Free(char**p2,int num){int i = 0;for (i = 0; i < num; i++){if (p2[i] != NULL){free(p2[i]);p2[i] = NULL;}}if (p2 != NULL){free(p2);p2 = NULL;}}void main(){int i = 0, j = 0;char** p2 = NULL;char*tmp;char tmpbuf[100];int num = 5;p2 =getMem(num);//打印printMyArray03(p2,num);//排序//交换指针指向sortMyArray03(p2,num); printMyArray03(p2, num);//释放内存 先申请的后释放getMem03_Free(p2,num); //释放完后 实参main函数的p2还是一个野指针if (p2 != NULL){free(p2);p2 = NULL;}printf("\nhehhe");system("pause");return;}
0 0
- 【C语言提高26】二级指针做输入的第三种内存模型:手工打造二维内存
- 【C语言提高25】二级指针做输入的第二种内存模型:二维数组
- 【C语言提高24】二级指针做输入的第一种内存模型:数组指针
- 【C语言提高23】二级指针做输出的内存模型
- 二级指针的第三种内存模型
- C语言中,二级指针的三种内存模型
- C语言中的二级指针的三种内存模型
- 【C语言提高27】二级指针三种内存模型总述
- 二维数组(二级指针的第二种内存模型)
- 二级指针第三种内存模型
- day4_二级指针做输入输出的三种内存模型
- 二级指针输入模型(三种内存模型)
- 二级指针的3种内存模型
- 二级指针的三种内存模型
- 二级指针的三种内存模型
- 二级指针的三种内存模型
- 二级指针的3种内存模型
- 二级指针的三种内存模型
- 跳舞毯
- unity3d添加武器功能
- Linux内核开发函数详解
- Caffe + Ubuntu 15.04 + CUDA 7.0 安装以及配置
- 基于.net搭建热插拔式web框架(实现原理)
- 【C语言提高26】二级指针做输入的第三种内存模型:手工打造二维内存
- 简单图形xml文件定义
- python 数据库连接
- 用Python和OpenCV创建一个图片搜索引擎的完整指南
- BZOJ 2243 染色(树链剖分+线段树)
- NOIP2015提高组Day1斗地主
- BS总结
- JAVA编程思想导论(猜字谜游戏1.0)
- 黑马程序员——OC学习——Category