【C 语言】二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、打印 指針數(shù)組 中指針指向的字符串
- 二、字符串排序
- 三、代碼示例
一、打印 指針數(shù)組 中指針指向的字符串
打印 指針數(shù)組 中指針指向的字符串 :
- 指針退化問題 : 傳入二級指針 , 同時還要傳入 一級指針的個數(shù) ; 實參是 指針數(shù)組 , 形參 退化為 二級指針 , 需要人為指定 數(shù)組的元素個數(shù) ;
- 驗證指針合法性 : 函數(shù)中 , 只要是指針 , 就有可能為 NULL , 函數(shù)入口就要驗證該指針合法性 ;
二、字符串排序
將 指針數(shù)組 作為參數(shù) , 傳入函數(shù)中 ;
函數(shù)的 二級指針 形參 , 既要作為 輸入 , 又要作為輸出 ;
int sort_array(char **array, int num) {// 驗證指針合法性if(array == NULL || num <= 0){printf("error : array == NULL || num <= 0\n");return -1;}// 循環(huán)控制變量int i = 0, j = 0;// 排序時 , 交換指針變量時的臨時變量char *tmp;// 對 指針數(shù)組 進行排序 , 排序依據(jù)是 指針 指向的數(shù)據(jù)對比for(i = 0; i < num; i++){for(j = i; j < num; j++){// 核心邏輯 : 如果 array[i] 大于 array[j]// 就交換兩個元素if(strcmp(array[i], array[j]) > 0){// 交換 i, j 位置的指針變量tmp = array[i];array[i] = array[j];array[j] = tmp;}}}return 0; }三、代碼示例
完整代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>/** 打印函數(shù)*/ int printf_array(char **array, int num) {// 驗證指針合法性if(array == NULL || num <= 0){printf("error : array == NULL || num <= 0\n");return -1;}// 循環(huán)控制變量int i = 0;// 打印上述數(shù)組for(i = 0; i < num; i++){// 使用 數(shù)組下標 與 指針 進行遍歷 , 效果相同//printf("%s\n", array[i]);printf("%s\n", *(array + i));}return 0; }int sort_array(char **array, int num) {// 驗證指針合法性if(array == NULL || num <= 0){printf("error : array == NULL || num <= 0\n");return -1;}// 循環(huán)控制變量int i = 0, j = 0;// 排序時 , 交換指針變量時的臨時變量char *tmp;// 對 指針數(shù)組 進行排序 , 排序依據(jù)是 指針 指向的數(shù)據(jù)對比for(i = 0; i < num; i++){for(j = i; j < num; j++){// 核心邏輯 : 如果 array[i] 大于 array[j]// 就交換兩個元素if(strcmp(array[i], array[j]) > 0){// 交換 i, j 位置的指針變量tmp = array[i];array[i] = array[j];array[j] = tmp;}}}return 0; }void main() {// 循環(huán)控制變量int i = 0, j = 0;// 數(shù)組大小int num = 0;// 排序時 , 交換指針變量時的臨時變量char *tmp;/** 復雜指針閱讀* 參考 https://blog.csdn.net/shulianghan/article/details/121453520 和* https://hanshuliang.blog.csdn.net/article/details/78568351#3____________________2803* 博客章節(jié)進行閱讀** 復雜指針解析流程 :* 1. 中心標識符是 array* 2. 先往右看 , 遇到 [] , 說明這是一個數(shù)組 , 挖掉 array[] 內容 , 然后調轉方向往左看* 3. 發(fā)現(xiàn)是 * , 說明數(shù)組中的元素是指針 , 挖掉 * , 往右看沒內容 , 往左看* 4. 發(fā)現(xiàn)是 char , 說明指針指向的數(shù)據(jù)是 char 類型** array 是一個數(shù)組 , 數(shù)組中的元素的 char * 字符串** 這是 指針數(shù)組 , 數(shù)組元素 是 指針*/char *array[] = {"abc", "123", "258", "sfd"};// 計算數(shù)組大小num = sizeof(array) / sizeof(array[0]);// 打印數(shù)組printf_array(array, num);// 對 指針數(shù)組 進行排序 , 排序依據(jù)是 指針 指向的數(shù)據(jù)對比sort_array(array, num);// 打印排序后的數(shù)組printf("\nSort:\n");printf_array(array, num);// 命令行不要退出system("pause");return; }執(zhí)行結果 :
總結
以上是生活随笔為你收集整理的【C 语言】二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】二级指针作为输入 ( 指针数
- 下一篇: 【每日随笔】使用 you-get 获取网