C++二级指针第一种内存模型(指针数组)
二级指针第一种内存模型(指针数组)
指针的输入特性:在主调函数里面分配内存,在被调用函数里面使用
指针的输出特性:在被调用函数里面分配内存,主要是把运算结果甩出来
指针数组
例如,一个一维指针数组的定义:int *ptr_array[10]。
如何理解指针数组
指针数组是数组元素为指针的数组,其本质为数组。
例如:*p[2]是指针数组,实质是一个数组,里面的两个元素都是指针 []的优先级比*的优先级高,p先与[]结合,形成数组p[2],有两个元素的数组,再与*结合,表示此数组 是指针类型的,每个数组元素相当于一个指针变量。
运用
指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便。
举例:
#include "stdio.h" #include "stdlib.h" #include "string.h" void main() { int i = 0, j = 0; char *tmp = NULL; char *ArrayStr[] = {"ccccc", "aaaa", "bbbb","11111"}; for (i=0; i<4; i++) { printf("%s \n", ArrayStr[i]); } //排序 for (i=0; i<4; i++) { for (j=i+1; j<4; j++) { if (strcmp(ArrayStr[i],ArrayStr[j]) > 0) { tmp = ArrayStr[i]; ArrayStr[i] = ArrayStr[j]; ArrayStr[j] = tmp; } } } for (i=0; i<4; i++) { printf("%s \n", ArrayStr[i]); } system("pause"); }
#include "stdio.h" #include "stdlib.h" #include "string.h" int printfArr(char **ArrayStr, int iNum) { int i = 0; for (i=0; i<iNum; i++) { printf("%s \n", ArrayStr[i]); } return 0; } int sortArrayStr(char **ArrayStr, int iNum) { int i = 0, j = 0; char *tmp = NULL; //排序 for (i=0; i<4; i++) { for (j=i+1; j<4; j++) { if (strcmp(ArrayStr[i],ArrayStr[j]) > 0) { tmp = ArrayStr[i]; ArrayStr[i] = ArrayStr[j]; ArrayStr[j] = tmp; } } } return 0; } //二级指针第一种内存模型 void main() { char *ArrayStr[] = {"ccccc", "aaaa", "bbbb","11111"}; printf("排序之前\n"); printfArr(ArrayStr,4); sortArrayStr(ArrayStr, 4); printf("排序之后\n"); printfArr(ArrayStr,4); system("pause"); }
一维指针数组做函数参数会退化为二级指针
posted on 2015-07-12 09:48 CentForever 阅读(445) 评论(0) 编辑 收藏 举报