43218-00 C语言程序设计-何钦铭chap11_指针进阶_第1页
43218-00 C语言程序设计-何钦铭chap11_指针进阶_第2页
43218-00 C语言程序设计-何钦铭chap11_指针进阶_第3页
43218-00 C语言程序设计-何钦铭chap11_指针进阶_第4页
43218-00 C语言程序设计-何钦铭chap11_指针进阶_第5页
已阅读5页,还剩46页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chap11指针进阶,11.1奥运五环色11.2字符定位11.3用链表构建学生信息库,本章要点,指针数组和指向指针的指针是如何被定义和使用的?指针如何作为函数的返回值?指向函数的指针的意义是什么?什么是结构的递归定义,哪种应用需要这种定义方法?对链表这种数据结构,如何使用动态内存分配操作?如何建立单向链表并实现插入、删除以及查找操作?,11.1奥运五环色,11.1.1程序解析11.1.2指针数组的概念11.1.3指向指针的指针11.1.4用指针数组处理多个字符串*11.1.5命令行参数,11.1.1程序解析,【例11-1】已知奥运五环的5种颜色的英文单词按一定顺序排列,输入任意一个颜色的英文单词,从已有颜色中查找并输出该颜色的位置值,若没有找到,则输出“NotFound”。,11.1.1程序解析,#include#includeintmain(void)inti;char*color5=“red”,”blue”,”yellow”,”green”,”black”;charstr20;printf(“Inputacolor:”);scanf(“%s”,str);for(i=0;i5;i+)if(strcmp(str,colori)=0)/*比较颜色是否相同*/break;if(i5)printf(“position:%dn”,i+1);elseprintf(“NotFoundn”);return0;,运行结果1Inputacolor:yellowposition:3运行结果2Inputacolor:purpleNotFound,指针数组,11.1.2指针数组的概念,C语言中的数组可以是任何类型,如果数组的各个元素都是指针类型,用于存放内存地址,那么这个数组就是指针数组。一维指针数组定义的一般格式为:类型名*数组名数组长度,11.1.2指针数组的概念,inta10;a是一个数组,它有10个元素每个元素的类型都是整型char*color5;color是一个数组,它有5个元素每个元素的类型都是字符指针,11.1.2指针数组的概念,char*color5=red,blue,yellow,green,black;color是一个数组,它有5个元素每个元素的类型都是字符指针数组元素可以处理字符串对指针数组元素的操作:printf(%s%xn,colori,colori);,对指针数组元素的操作和对同类型指针变量的操作相同,继续执行:char*tmp;tmp=color0;color0=color4;color4=tmp;,11.1.2指针数组的概念,color0与color4交换后的情况,指针数组操作时:可以直接对数组元素进行赋值(地址值)和引用tmp=color0;也可以间接访问和操作数组元素所指向的单元内容strcpy(color0,“purple);,11.1.3指向指针的指针,C语言中,指向指针的指针(二级指针)一般定义为:类型名*变量名inta=10;int*p=,inta=10,b=20,t;int*pa=,【例11-2】,操作(1):ppt=ppb;ppb=ppa;ppa=ppt;,操作(2):pt=pb;pb=pa;pa=pt;,操作(3):t=b;b=a;a=t;,二维数组的指针形式a34:看成是由a0、a1、a2组成的一维数组,而a0、a1、a2各自又是一个一维数组。也即二维数组是数组元素为一维数组的一维数组。a:第0行地址(行地址)a+i:第i行的地址*(a+i)/ai:第i行首元素的地址*(a+i)+j/ai+j:第i行第j个元素的地址*(*a+i)/ai0:第i行首元素的值*(*a+i)+j)/aij:第i行首元素的值,11.1.3指向指针的指针,【例11-3】改写例11-1,用指向指针的指针实现。#include#includeintmain(void)inti;char*color5=“red”,”blue”,”yellow”,”green”,”black”;/char*pc;/*定义二级指针变量*/charstr20;pc=color;/*二级指针赋值*/printf(“Inputacolor:”);scanf(“%s”,str);for(i=0;i5;i+)if(strcmp(str,*(pc+i)=0)/*比较颜色是否相同*/break;if(i5)printf(“position:%dn”,i+1);elseprintf(“NotFoundn”);return0;,11.1.3指向指针的指针,指向指针的指针,使用指向指针的指针操作数据,11.1.3指向指针的指针,【例11-3】改写例11-1,用指向指针的指针实现。,pccolor,11.1.4用指针数组处理多个字符串,使用指针数组更节省内存空间,指针数组char*pcolor=red,blue,yellow,green,“black;,11.1.4用指针数组处理多个字符串,2用指针数组操作多个字符串【例11-4】将5个字符串从小到大排序后输出。,voidmain()inti;inta5=6,5,2,8,1;voidfsort(inta,intn);fsort(a,5);for(i=0;i5;i+)printf(%d,ai);,#includevoidmain()inti;char*pcolor=“red”,”blue”,”yellow”,”green”,”black”;voidfsort(char*color,intn);fsort(pcolor,5);for(i=0;inext)printf(%dt%st%dn,ptr-num,ptr-name,ptr-score);,先连:s-next=ptr-next;后断:ptr-next=s;,11.3.3单向链表的常用操作,3.插入结点,ptr2=ptr1-next;先接:ptr1-next=ptr2-next;,后删:free(ptr2);,11.3.3单向链表的常用操作,4.删除结点,ptr1-next=ptr1-next-next;,本章总结,指针数组指针数组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论