C语言的指针和结构体ppt课件_第1页
C语言的指针和结构体ppt课件_第2页
C语言的指针和结构体ppt课件_第3页
C语言的指针和结构体ppt课件_第4页
C语言的指针和结构体ppt课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

.,1,C语言中的指针与结构体,.,2,指针的概念,地址内容变量名,intx=20,y=1,z=155;int*p;p=,指针变量,指针变量:存放地址的变量,某个变量的地址,指向,(内存单元),.,3,指针变量所指向的变量的类型,int*p;p是整型指针,指向整型变量float*fp;fp是浮点型指针,指向浮点型变量char*cp;cp是字符型指针,指向字符型变量,类型名*指针变量名,指针声明符,指针变量的定义,.,4,取地址运算(p=,.,6,赋值运算,*p1*p2,inta=3,*p1,*p2;p1=/p2也指向a,/相同类型的指针才能相互赋值,.,7,注意:指针变量必须初始化。,voidmain()inta=1,b=2,*p1,*p2,*pt;p1=,a=1;b=2;*p1=1,*p2=2a=1;b=2;*p1=2,*p2=1,.,8,指针作为函数参数,voidswap(int*px,int*py)intt;t=*px;*px=*py;*py=t;,要通过函数调用来改变主调函数中某个变量的值:(1)在主调函数中,将该变量的地址或者指向该变量的指针作为实参(2)在被调函数中,用指针类型形参接受该变量的地址(3)在被调函数中,改变形参所指向变量的值,/swap(,.,9,数组和地址间的关系,inta100,*p;数组名代表一个地址,它的值是数组首元素的地址(基地址)a+i是距数组a的基地址的第i个偏移,sum=0;for(i=0;i100;i+)sum=sum+ai;,*(a+i),下标运算符的含义,.,10,任何由数组下标来实现的操作都能用指针来完成inta100,*p;p=a;或p=,sum=0;for(i=0;iage=26;当p=,.,30,结构体指针作为函数参数,当结构指针作为函数的参数时,执行效率高,可以完成比基本类型指针更为复杂的操作。例:输入10个学生的学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级要求定义和调用函数set_grade根据学生成绩设置等级,并统计不及格人数等级设置:A:85100;B:7084;C:6069;D:059,.,31,源程序,#defineN10structstudentintnum;charname20;intscore;chargrade;intmain(void)intcount;structstudentstuN,*ptr;ptr=stu;/*输入略*/count=set_grade(ptr);,intset_grade(structstudent*p)inti,n=0;for(i=0;iscore=85)p-grade=A;elseif(p-score=70)p-grade=B;elseif(p-score=60)p-grade=C;elsep-grade=D;n+;returnn;,调用set_grade返回主函数后,主函数中结构体数组stu的元素的grade成员已经被赋值.,与结构体变量作为函数参数相比,用结构体指针作为函数参数的效率更高,因而是更好的选择。,.,32,多文件结构,工作区,工程1,工程2,工程n,头文件,源文件,例:VC中的多文件结构,.,33,示例,#include#include#include#include/常量定义#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineOK1#defineERROR0#defineOVERFLOW-2#defineTrue1#defineFalse0/函数返回值类型定义typedefintStatus;/表节点数据类型定义typedefintElemType;,/顺序表类型定义typedefstructElemType*elem;intlength;intlistsize;SqList;/顺序表各操作声明StatusInitList_Sq(SqList,头文件:SqList.h,.,34,#includeSqList.h/各操作的实现StatusInitList_Sq(SqList,源文件:SqList.cpp,.,35,intListEmpty_Sq(SqListL)return(L.length=0);intListLength_Sq(SqListL)returnL.length;StatusGetElem_Sq(SqListL,inti,ElemType,.,36,StatusListInsert_Sq(SqList,.,37,StatusListDelete_Sq(SqList,.,38,#includeSqList.hvoidmain()SqListL;inti,num;cout创建顺序表endl;if(!InitList_Sq(L)cout表创建失败;/创建空顺序表Lelse/产生各节点srand(time(NULL);for(i=0;i10;i+)/产生10个整数,插入顺序表表尾num=rand()%100;ListInsert_Sq(L,i+1,(ElemType)num);,源文件:SqDemo.cpp(包含主函数main(),.,39,/输出原始顺序表的各个值cout生成的原始表为:;PrintList_Sq(L);/输出第2个节点的数据值GetElem_Sq

温馨提示

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

评论

0/150

提交评论