c总结8 --- 二级指针使用三种模型之一(二级指针1)
2015-10-22 08:50
459 查看
对于二级指针,常常会把自己绕晕了。二级指针,可以简单的理解为,就是一个二维数组。现在总结下二级指针的模型形式
1、第一种模型 char buf[10][30]= { "eeee", "ffff", "aas", "111","cccc" };
2、第二种模型 char *arr[] = {"dfe","sss","abc","eee"};
3、第三种模型 char **pArr = (char**)malloc(100 * sizeof(char*));
我们先来看第一种模型,看代码 :
通过上面的代码,我们发现要使用这种模型的话,那么使用数据交换的时候,要定义一个buffer 例如:①, 在后面使用strcpy进行数据交换,如②。
上面的代码是在main函数中搞定的,那么作为参数,该如何写写呢?
代码如下:
1、第一种模型 char buf[10][30]= { "eeee", "ffff", "aas", "111","cccc" };
2、第二种模型 char *arr[] = {"dfe","sss","abc","eee"};
3、第三种模型 char **pArr = (char**)malloc(100 * sizeof(char*));
我们先来看第一种模型,看代码 :
int main() { int i = 0, j = 0; char temp[30] = {0};//① char buf[10][30] = { "eeee", "ffff", "aas", "111","cccc" }; int num = 4; printf("排序之前打印\n"); for (i = 0; i < num; i++) { printf("%s \n", buf[i]); } for (i = 0; i < num; i++) { for (j = i + 1; j < num;j++) { if ( strcmp(buf[i],buf[j])>0) { strcpy_s(temp, sizeof(buf[i]), buf[i]); //② strcpy_s(buf[i], sizeof(buf[i]), buf[j]); strcpy_s(buf[j], sizeof(buf[i]), temp); } } } printf("排序之后打印\n"); for (i = 0; i < num; i++) { printf("%s \n", buf[i]); } system("pause"); return 0; }
通过上面的代码,我们发现要使用这种模型的话,那么使用数据交换的时候,要定义一个buffer 例如:①, 在后面使用strcpy进行数据交换,如②。
上面的代码是在main函数中搞定的,那么作为参数,该如何写写呢?
代码如下:
/************************************************************************/ /* 函数名称:printArr /* 函数功能:对二维数组中的元素进行打印 /* 参数1: 二维数组 /* 参数2: 数组元素个数 /* 返回值: 0正常 非0为不正常 /* 说明: /************************************************************************/ //int printArr2(char pArr[10][30], int num) int printArr2(char pArr[][30], 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[10][30], int num) { int i = 0, j = 0; char tmp[30] = { 0 }; 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) { strcpy_s(tmp, sizeof(pArr[i]), pArr[i]); strcpy_s(pArr[i], sizeof(pArr[i]), pArr[j]); strcpy_s(pArr[j], sizeof(pArr[i]), tmp); } } } return ret; } int main() { int i = 0, j = 0; char temp[30] = { 0 }; char buf[10][30] = { "eeee", "ffff", "aas", "111", "cccc" }; int num = 5; printf("排序之前打印\n"); printArr2(buf, num); sortArr(buf, num); printf("排序之后打印\n"); printArr2(buf, num); system("pause"); return 0; }
相关文章推荐
- 关于java POI读取Excel2007流关不掉问题
- webview简单使用
- 单链表之检测链表是否有环并找出环的入口点
- fatal error C1083: Cannot open type library file: 'swpublished.tlb': No such file or directory 解决办法
- swing 填充表格(自动)
- eclipse 工程测试包
- Dubbo client can not supported string message
- 批量地导入本地的scholar.enw到endnote
- 10.21html 标签
- 判断一个小时之内是否重复发送了10次短信
- MQ中 amqsput : command not found的解决办法
- 内部api请求
- Android 如何直播RTMP流
- 打造高性能JAVA应用你需要知道的
- SkipList跳表基本原理
- swing 确认框和提示框
- FreeBSD目录结构
- python核心编程 9-10习题
- STM32 USART的DMA模式针对不定长度数据帧的应用
- 【codevs 2218】补丁vs错误(CTSC 1999)