c总结9--- 二级指针使用三种模型之二(二级指针2)
2015-10-22 08:57
351 查看
我们来学习下,第二种模型, char *arr[] = {"dfe","sss","abc","eee"};
上代码:
通过代码,我们就发现,第二个模型的使用和第一个有很多的不同,第二个模型在进行数据交换的时候,定义的是指针,如①的位置。交换的时候使用的数组赋值形式②。
当作为参数的时候,如何使用?代码如下:
上代码:
int main() { int i = 0, j = 0; char * tmp = NULL; //临时变量 用于参与排序使用 ① //二级指针的第一种模型 //首先是一个数组 ----指针数组---数组中的每一个元素是指针 []的优先级比较高 char *arr[] = {"dfe","sss","abc","eee"}; //获取arr指针数组元素的个数 int num = sizeof(arr) / sizeof(*arr); //或 sizeof(cArr)/sizeof(cArr[0])); printf("排序前: \n"); for (i = 0; i <num;i++) { printf("%s \n", arr[i]); } //排序 for (i = 0; i <num;i++) { //因为要用第一个和后面一个比较 所有使用i+1即可 for (j = i + 1; j <num; j++) { if (strcmp(arr[i], arr[j])>0) { tmp = arr[i]; //② arr[i] = arr[j]; arr[j] = tmp; } } } printf("排序后: \n"); //排序后打印输出 for (i = 0; i <num;i++) { printf("%s \n", arr[i]); } system("pause"); return 0; }
通过代码,我们就发现,第二个模型的使用和第一个有很多的不同,第二个模型在进行数据交换的时候,定义的是指针,如①的位置。交换的时候使用的数组赋值形式②。
当作为参数的时候,如何使用?代码如下:
/************************************************************************/ /* 函数名称:printArr /* 函数功能:对二维数组中的元素进行打印 /* 参数1: 二维数组 /* 参数2: 数组元素个数 /* 返回值: 0正常 非0为不正常 /* 说明: /************************************************************************/ int printArr(char ** pArr, int num) { //循环遍历的参数 int i = 0 ; //结果返回值 int ret = 0; if (pArr == NULL) { ret = -1; printf("func printArr() 参数 pArr 不能为空 err:%d \n", ret); return ret; } if (num <=0) { ret = -2; printf("func printArr() 参数 num 不能小于等于 err:%d \n", ret); return ret; } for (i = 0; i < num; i++) { printf("%s \n", pArr[i]); } return ret; } /************************************************************************/ /* 函数名称:sortArr /* 函数功能: 对二维数组中的元素进行排序 /* 参数1: 二维数组 /* 参数2: 数组元素个数 /* 返回值: 0正常 非0为不正常 /* 说明: /************************************************************************/ int sortArr(char ** pArr, int num) { int i = 0, j = 0; char* tmp = NULL; int ret = 0; if (pArr == NULL) { ret = -1; printf("func printArr() 参数 pArr 不能为空 err:%d \n", ret); return ret; } for (i = 0; i <num; i++) { //因为要用第一个和后面一个比较 所有使用i+1即可 for (j = i + 1; j < num; j++) { if (strcmp(pArr[i], pArr[j]) > 0) { tmp = pArr[i]; pArr[i] = pArr[j]; pArr[j] = tmp; } } } return ret; } int main() { int i = 0, j = 0; char * tmp = NULL; //临时变量 用于参与排序使用 //二级指针的第一种模型 //首先是一个数组 ----指针数组---数组中的每一个元素是指针 []的优先级比较高 char *arr[] = { "dfe", "sss", "abc", "eee" }; //获取arr指针数组元素的个数 int num = sizeof(arr) / sizeof(*arr); printf("排序前: \n"); printArr(arr, num); //排序 sortArr(arr, num); printf("排序后: \n"); //排序后打印输出 printArr(arr, num); system("pause"); return 0; }
相关文章推荐
- 二叉树之层序遍历二叉树
- [实战]MVC5+EF6+MySql企业网盘实战(6)——ajax方式登录
- 安卓横竖屏切换时activity的生命周期
- java中的equals和==,以及重写equals和hashCode
- No enclosing instance of type E is accessible
- 学习java 一
- 九度OJ 1056:最大公约数 (GCD)
- windows应用技巧
- Oracle 的sql优化提高性能
- 初识JAVA之OOP
- 九度OJ 1056:最大公约数 (GCD)
- swing 组合框(下拉框)默认第一个
- Win10 Mobile预览版10572:拨号界面支持号码自由编辑(演示视频)
- swing 组合框(下拉框)选中记录,设置下拉列表
- Cocoapods
- Weka报错"Unknow data type INT. Add entry in weka/experiment/DatabaseUtils.props"
- 【codevs 2451】互不侵犯king 状压dp
- swing 组合框(下拉框)获取选中的值
- ssh登录会话保持时间太短解决方法之一
- String当中的高效函数(优化)