【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 通过 交换指针指向的内存数据 方式进行排序 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 通过 交换指针指向的内存数据 方式进行排序 )
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、二維指針 排序 ( 通過 交換指針指向的內(nèi)存數(shù)據(jù) 方式進行排序 )
- 二、完整代碼示例
一、二維指針 排序 ( 通過 交換指針指向的內(nèi)存數(shù)據(jù) 方式進行排序 )
在上一篇博客 【C 語言】二級指針作為輸入 ( 二維指針 | 為 二維指針 分配內(nèi)存 - 存放 一維指針 | 為每個 一維指針 分配內(nèi)存 | 釋放二維指針內(nèi)存 ) 基礎(chǔ)上 , 對 二維指針 指向的 若干 一維指針 指向的數(shù)據(jù) 進行排序 ;
首先 , 準備好了循環(huán)控制變量 , 和 排序 交換 時 , 使用的 中間變量 ;
- 循環(huán)控制變量 : 排序一般需要定義兩個變量 ;
- 排序時 , 交換指針指向的內(nèi)存數(shù)據(jù) , 該數(shù)組是存儲 要 交換內(nèi)存數(shù)據(jù) 的臨時變量 ;
然后 , 對二維指針指向的數(shù)據(jù) , 進行排序 ; 涉及到使用 strcmp 函數(shù) , 參考 【C 語言】二級指針作為輸入 ( 指針數(shù)組 | 指針數(shù)組排序 | 字符串排序 | strcmp 函數(shù) ) 一、strcmp 函數(shù) 博客章節(jié) , 進行理解 ;
// 對 二維指針 指向的數(shù)據(jù)進行排序for(i = 0; i < num; i++){for(j = i + 1; j < num; j++){// 交換 i , j 指針指向的內(nèi)存數(shù)據(jù)// 從 大 到 小 進行排序if(strcmp(p[i], p[j]) < 0){strcpy(tmp, p[i]);strcpy(p[i], p[j]);strcpy(p[j], tmp);}}}二、完整代碼示例
完整代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {// 二維指針 指向的 一維指針 個數(shù)int num = 4;// 聲明二維指針char **p = NULL;// 循環(huán)控制變量int i = 0, j = 0;// 排序時 , 交換指針 , 該指針是存儲 要 交換指針 的臨時變量//char *tmp = NULL;// 排序時 , 交換指針指向的內(nèi)存數(shù)據(jù)// 該數(shù)組是存儲 要 交換內(nèi)存數(shù)據(jù) 的臨時變量char tmp[30];// 在堆內(nèi)存中 , 分配一塊內(nèi)存空間// 用于存儲 num 個 一維指針// 每個 一維指針 指向一塊內(nèi)存空間p = (char **)malloc( sizeof(char*) * num );// 遍歷 二維指針 指向的多個 一維指針// 并為每個 一維指針 在堆內(nèi)存中 分配 20 字節(jié)內(nèi)存for(i = 0; i < num; i++){// 為每個字符分配 20 字節(jié)空間p[i] = (char *)malloc(sizeof (char) * 20);// 向內(nèi)存中寫入 字符串 , 字符串內(nèi)容是 i + 1// 注意是通過通配符拼裝的字符串sprintf(p[i], "%d", i + 1);}// 打印字 二維指針 指向的 num 個 一維數(shù)組 指向的 字符串for(i = 0; i < num; i++){printf("%s\n", p[i]);}// 對 二維指針 指向的數(shù)據(jù)進行排序for(i = 0; i < num; i++){for(j = i + 1; j < num; j++){// 交換 i , j 指針指向的內(nèi)存數(shù)據(jù)// 從 大 到 小 進行排序if(strcmp(p[i], p[j]) < 0){strcpy(tmp, p[i]);strcpy(p[i], p[j]);strcpy(p[j], tmp);}}}// 打印字 二維指針 指向的 num 個 一維數(shù)組 指向的 字符串printf("\nSort : \n");for(i = 0; i < num; i++){printf("%s\n", p[i]);}// 釋放內(nèi)存// 先釋放 num 個 一級指針for(i = 0; i < num; i++){if(p[i] != NULL){free(p[i]);p[i] = NULL;}}// 再釋放 二級指針if(p != NULL){free(p);}// 命令行不要退出system("pause");return 0; }執(zhí)行結(jié)果 :
總結(jié)
以上是生活随笔為你收集整理的【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 二级指针排序 | 通过 交换指针指向的内存数据 方式进行排序 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】二级指针作为输入 ( 自定义
- 下一篇: 【C 语言】二级指针作为输入 ( 自定义