二级指针做输入的模型003
自己分配内存,释放的时候一层一层释放
#include <stdio.h> #include <string.h> #include <stdlib.h> char ** getMem(int num) { int i; 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; } void sortMyArray03(char ** myArray, int num) { int i, j; 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 printfmyArray03(char ** myArray, int num) { int i; for(i = 0; i < num; i++) { //printf("%s \n", myArray[i]); printf("%s \n", *(myArray+i)); } } void getMem_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); } } int main(void) { int i = 0; int j = 0; char **p2 = NULL; char *tmp; char tmpBuf[100]; int num = 5; p2 = getMem(num); //排序之前 printf("排序之前 \n"); printfmyArray03(p2, num); /* //排序 交换的是指针的指向 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; } } } */ //排序 交换的是内存 sortMyArray03(p2, num); /* for(i = 0; i<num; i++) { for(j = i+1; j<num; j++) { if(strcmp(p2[i], p2[j]) < 0) { strcpy(tmpBuf, p2[i]); strcpy(p2[i], p2[j]); strcpy(p2[i], tmpBuf); } } } */ //排序之后 printf("排序之后 \n"); printfmyArray03(p2, num); getMem_Free(p2, num); return 0; }
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并,获取更多隐藏干货,QQ交流群:859800032 微信公众号:Crystal软件学堂
|
作者:Liu_Jing bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |

浙公网安备 33010602011771号