成都理工大学-C++程序设计---第5章指针(4).ppt
****指针数组数组指针指针与字符串二级指针内存动态分配**3.指针与字符串表达字符串的形式字符数组一维(一个串)二维(多个串)字符串常量——地址——串首地址(1)指针与一维字符数组:char*p,ch[]=”Hello!”;/*说明字符指针和字符数组*/p=ch;/*指针指向字符数组*/putchar(*(p+2));/*通过指针引用数组元素*/指针与常量字符串:char*p;/*说明字符指针*/p=“Hello!”;/*指针指向字符串*/puts(p);/*通过指针引用字符串*/char*p=“Hello!”;赋值表示将字符串的地址赋给指针!****(2)指针与二维字符数组:二维字符数组一般与指针数组配合使用charch[3][81]={Hello!,AAAAAAA,BBBBB};char*p[3]={ch[0],ch[1],ch[2]};puts(p[2]);/*puts(ch[2]);*/用指针数组独立处理多个字符串char*ch[3]={Hello!,AAAAAAA,BBBBB};puts(ch[2]);/*puts(ch[2]);*/【例】将5个字符串按字典顺序排序-使用冒泡排序法#defineN5#includestring.h#includestdio.hintmain(void){ inti,j;char*t;char*str[]={monitor, landscape, paddle, partition, current };for(i=1;iN;i++)for(j=0;jN-i;j++) if(strcmp(str[j],str[j+1])0){t=str[j];str[j]=str[j+1];str[j+1]=t;}for(i=0;iN;i++)printf(\n%s,str[i]);return(0);}交换指针指向比较相邻串大小指针数组存放字符串【例】将5个字符串按字典顺序排序-使用冒泡排序法#defineN5#includestring.h#includestdio.hintmain(void){ inti,j;char*t;charstr[][20]={monitor, landscape, paddle, partition, current };for(i=1;iN;i++)for(j=0;jN-i;j++)if(strcmp(str[j],str[j+1])0){t=str[j];str[j]=str[j+1];str[j+1]=t;}for(i=0;iN;i++)printf(\n%s,str[i]);return(0);}改写为:chart[20];strcpy(t,str[j]);strcpy(str[j],str[j+1]);strcpy(str[j+1],t);****指针数组数组指针指针与字符串二级指针内存动态分配****4.二级指针如果一个指针变量存储的是另一个指针变量的地址,则称该指针为指向指针的指针,即二级指针。intx=10,*q=x,**p=q;q