【例11-2】int a = 10, b = 20, t;int *pa =&a, *pb =&b,*pt;int **ppa = &pa, **ppb = &pb, **ppt;ppapaa**ppa&&pa20*pbpbppbb**ppb&10&pa*pa操作(1): ppt = ppb; ppb = ppa; ppa= ppt;操作(2): pt = pb; pb = pa; pa = pt;操作(3): t=b;b=a;a=t;
&a pa a &pa 10 ppa **ppa *pa &b pb b &pb 20 ppb **ppb *pb ppa pa a &pb &a 10 **ppb *pa &b pb b &pa 20 ppb **ppa *pb ppa pa a &pb &b 10 **ppa *pb &a pb b &pa 20 ppb **ppb *pa ppa pa a &pb &b 20 **ppa *pb &a pb b &pa 10 ppb **ppb *pa int a = 10, b = 20, t; int *pa = &a, *pb = &b, *pt; int **ppa = &pa, **ppb = &pb, **ppt; 【例11-2】 操作(1):ppt = ppb; ppb = ppa; ppa = ppt; 操作(2):pt = pb; pb = pa; pa = pt; 操作(3):t = b; b = a; a = t;
11.1.3指向指针的指针【例11-3】改写例11-1,用指向指针的指针实现。#include<stdio.h>#include<string.h>int main(void)( inti;char*color[5]={"red","blue","yellow","green","black"};char**pc;/*定义二级指针变量指向指针的指针char str[20];pc=color;/*二级指针赋值*/printf("Inputa color:");scanf("%s", str);for(i= 0; i<5; i++)if(strcmp(str,*(pc+i))==0)/*比较颜色是否相同*/break;使用指向指针的指针if(i< 5)printf("position:%din", i+1);操作数据elseprintf("Not Foundin");return O;1
◼ 【例11-3】改写例11-1,用指向指针的指针实现。 #include<stdio.h> #include<string.h> int main(void) { int i; char *color[5] = {“red”, ”blue”, ”yellow”, ”green”, ”black”}; / char **pc; /* 定义二级指针变量 */ char str[20]; pc = color; /* 二级指针赋值 */ printf(“Input a color:”); scanf(“%s”, str); for(i = 0; i < 5; i++) if(strcmp(str, *(pc+i)) == 0) /* 比较颜色是否相同*/ break; if(i < 5) printf(“position:%d\n”, i+1); else printf(“Not Found\n”); return 0; } 11.1.3 指向指针的指针 指向指针的指针 使用指向指针的指针 操作数据
11.1.3指向指针的指针【例11-3】改写例11-1,用指向指针的指针实现。pc color &color[0]*pc color[0]pc.*(pc+i)color[]color*pc**pc*(*pc)台*color[0] :“r"rediocolor[0]bluelocolor[1]yellowocolor[2]greenlocolor[3]blacklocolor[4]
11.1.3 指向指针的指针 ◼ 【例11-3】改写例11-1,用指向指针的指针 实现。 pc color &color[0] *pc color[0] *(pc+i)color[i] **pc*(*pc)*color[0] : ‘r’ color color[0] red\0 color[1] blue\0 color[2] color[3] color[4] yellow\0 green\0 black\0 pc *pc
11.1.4用指针数组处理多个字符串■1.指针数组与二维数组口指针数组口二维字符数组char *pcolor[]= {"red",char ccolor[][7] = {"red","blue","yellow","green","blue","yellow","green","black"};"black"};使用指针数组更节省内存空间pcolorccolorredia10eCbluelolobuS10yellowo10ewV10greenloee1gr10akLCblackiob
◼ 1.指针数组与二维数组 二维字符数组 char ccolor[ ][7] = {"red", "blue", "yellow", "green", “black"}; 11.1.4 用指针数组处理多个字符串 使用指针数组更节省内存空间 pcolor red\0 blue\0 yellow\0 green\0 black\0 r e d \0 b l u e \0 y e l l o w \0 g r e e n \0 b l a c k \0 ccolor 指针数组 char *pcolor[ ] = {"red", "blue", "yellow", "green", “black"};
11.1.4用指针数组处理多个字符串2.用指针数组操作多个字符串【例11-4】将5个字符串从小到大排序后输出。#include <string.h>void main()void main()( inti;( int i;int a[5] = [6, 5, 2, 8, 1];char *pcolor[]={“red","blue","yellow","green","black"};void fsort(int a[ ], int n);void fsort(char *color[ l, int n);fsort(a, 5);fsort(pcolor, 5);for(i = 0; i< 5; i++)for(i= 0; i< 5; i++)printf("%d ", a[i]);printf("%s", pcolor[i]);17
11.1.4 用指针数组处理多个字符串 2.用指针数组操作多个字符串 【例11-4】将5个字符串从小到大排序后输出。 void main( ) { int i; int a[5] = {6, 5, 2, 8, 1}; void fsort(int a[ ], int n); fsort(a, 5); for(i = 0; i < 5; i++) printf("%d ", a[i]); } #include <string.h> void main( ) { int i; char *pcolor[ ] ={ “red”, ”blue”, ”yellow”, ”green”, ”black”}; void fsort(char *color[ ], int n); fsort(pcolor, 5); for(i = 0; i < 5; i++) printf("%s ", pcolor[i]); }