抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数

【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数

时间:2024-08-01 04:42:18

相关推荐

文章目录

一、抽象 二维数组 业务函数1、二维数组 打印函数2、二维数组 排序函数二、完整代码示例

一、抽象 二维数组 业务函数

1、二维数组 打印函数

注意 , 二维数组 作为 函数参数 输入到函数中 , 不能传入 二维指针 ;

此处遍历时 , 注意指针的步长 ,传入一个二级指针char **, 会出错 , 如果传入 二级指针 ,array[i]等同于*(array + i),array的步长是10;

这里将 函数形参 定义为char array[4][10];

代码示例 :

/** 此处遍历时 , 注意指针的步长 ,* 传入一个二级指针 char ** , 会出错* 如果传入 二级指针 ,* array[i] 等同于 *(array + i)* array 的步长是 10*/int print_str(char array[4][10], int num){// 循环控制变量int i = 0;// 判断指针合法性if(array == NULL){printf("array == NULL\n");return -1;}// 打印二维数组中的字符串for(i = 0; i < num; i++){// 使用数组下标形式访问printf("%s\n", array[i]);// 使用指针访问//printf("%s\n", *(array + i));}return 0;}

2、二维数组 排序函数

二维数组排序时 , 也不能传入二维指针作为形参 , 需要传入char array[4][10]作为形参 ;

代码示例 :

/** 二维数组*/int sort_array(char array[4][10], int num){// 循环控制变量int i = 0, j = 0;// 排序时 , 交换指针变量时的临时变量 , 存储指针指向的内存所存储的数据char tmp[10];// 判断指针合法性if(array == NULL){printf("array == NULL\n");return -1;}// 二维数组排序// 对 指针数组 进行排序 , 排序依据是 指针 指向的数据对比for(i = 0; i < num; i++){for(j = i + 1; j < num; j++){// 核心逻辑 : 如果 array[i] 大于 array[j]//就交换两个元素if(strcmp(array[i], array[j]) > 0){// 交换 i, j 位置的指针指向的内存数据strcpy(tmp, array[i]);strcpy(array[i], array[j]);strcpy(array[j], tmp);}}}return 0;}

二、完整代码示例

完整代码示例 :

#include <stdio.h>#include <stdlib.h>#include <string.h>/** 此处遍历时 , 注意指针的步长 ,* 传入一个二级指针 char ** , 会出错* 如果传入 二级指针 ,* array[i] 等同于 *(array + i)* array 的步长是 10*/int print_str(char array[4][10], int num){// 循环控制变量int i = 0;// 判断指针合法性if(array == NULL){printf("array == NULL\n");return -1;}// 打印二维数组中的字符串for(i = 0; i < num; i++){// 使用数组下标形式访问printf("%s\n", array[i]);// 使用指针访问//printf("%s\n", *(array + i));}return 0;}/** 二维数组*/int sort_array(char array[4][10], int num){// 循环控制变量int i = 0, j = 0;// 排序时 , 交换指针变量时的临时变量 , 存储指针指向的内存所存储的数据char tmp[10];// 判断指针合法性if(array == NULL){printf("array == NULL\n");return -1;}// 二维数组排序// 对 指针数组 进行排序 , 排序依据是 指针 指向的数据对比for(i = 0; i < num; i++){for(j = i + 1; j < num; j++){// 核心逻辑 : 如果 array[i] 大于 array[j]//就交换两个元素if(strcmp(array[i], array[j]) > 0){// 交换 i, j 位置的指针指向的内存数据strcpy(tmp, array[i]);strcpy(array[i], array[j]);strcpy(array[j], tmp);}}}return 0;}int main(){// 循环控制变量int i = 0, j = 0;// 二维数组中的一维数组个数int num = 4;// 排序时 , 交换指针变量时的临时变量 , 存储指针指向的内存所存储的数据char tmp[10];// I. 二维数组char array[4][10] = {"abc", "123", "258", "sfd"};// II. 打印二维数组中的字符串print_str(array, num);// III. 二维数组排序// 对 指针数组 进行排序 , 排序依据是 指针 指向的数据对比sort_array(array, num);// IV. 打印二维数组中的字符串printf("\nSort:\n");print_str(array, num);// 命令行不要退出system("pause");return 0;}

执行结果 :

【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

如果觉得《【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。