




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言中的指针与结构体,1,指针的概念,地址内容变量名,intx=20,y=1,z=155;int*p;p=,指针变量,指针变量:存放地址的变量,某个变量的地址,指向,(内存单元),2,指针变量所指向的变量的类型,int*p;p是整型指针,指向整型变量float*fp;fp是浮点型指针,指向浮点型变量char*cp;cp是字符型指针,指向字符型变量,类型名*指针变量名,指针声明符,指针变量的定义,3,取地址运算(p=,5,赋值运算,*p1*p2,inta=3,*p1,*p2;p1=/p2也指向a,/相同类型的指针才能相互赋值,6,注意:指针变量必须初始化。,voidmain()inta=1,b=2,*p1,*p2,*pt;p1=,a=1;b=2;*p1=1,*p2=2a=1;b=2;*p1=2,*p2=1,7,指针作为函数参数,voidswap(int*px,int*py)intt;t=*px;*px=*py;*py=t;,要通过函数调用来改变主调函数中某个变量的值:(1)在主调函数中,将该变量的地址或者指向该变量的指针作为实参(2)在被调函数中,用指针类型形参接受该变量的地址(3)在被调函数中,改变形参所指向变量的值,/swap(,8,数组和地址间的关系,inta100,*p;数组名代表一个地址,它的值是数组首元素的地址(基地址)a+i是距数组a的基地址的第i个偏移,sum=0;for(i=0;i100;i+)sum=sum+ai;,*(a+i),下标运算符的含义,9,任何由数组下标来实现的操作都能用指针来完成inta100,*p;p=a;或p=,sum=0;for(i=0;iage=26;当p=,29,结构体指针作为函数参数,当结构指针作为函数的参数时,执行效率高,可以完成比基本类型指针更为复杂的操作。例:输入10个学生的学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级要求定义和调用函数set_grade根据学生成绩设置等级,并统计不及格人数等级设置:A:85100;B:7084;C:6069;D:059,30,源程序,#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成员已经被赋值.,与结构体变量作为函数参数相比,用结构体指针作为函数参数的效率更高,因而是更好的选择。,31,多文件结构,工作区,工程1,工程2,工程n,头文件,源文件,例:VC中的多文件结构,32,示例,#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,33,#includeSqList.h/各操作的实现StatusInitList_Sq(SqList,源文件:SqList.cpp,34,intListEmpty_Sq(SqListL)return(L.length=0);intListLength_Sq(SqListL)returnL.length;StatusGetElem_Sq(SqListL,inti,ElemType,35,StatusListInsert_Sq(SqList,36,StatusListDelete_Sq(SqList,37,#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(),38,/输出原始顺序表的各个值cout生成的原始表为:;PrintList_Sq(L);/输出第2个节点的数据值GetElem_Sq(L,2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保产业园2025年循环经济模式绿色技术创新与产业协同发展报告
- 2025年金融行业人工智能伦理与监管挑战下的金融科技监管政策实施报告
- 2025年新能源汽车智能座舱硬件配置创新与软件生态发展模式研究报告
- 新能源储能行业在2025年储能电站投资回报分析中的应用前景报告
- 2025年成人教育终身学习体系构建与自适应学习平台运营实践报告
- 解析2025年区块链如何提升跨境支付结算速度与安全性报告
- 2025国网物资有限公司第二批高校毕业生录用人选的考前自测高频考点模拟试题及1套参考答案详解
- 2025内蒙古鄂尔多斯生态环境职业学院人才引进38人考前自测高频考点模拟试题及一套完整答案详解
- 2025甘肃科源电力有限公司高校毕业生招聘40人考前自测高频考点模拟试题及答案详解(易错题)
- 2025年甘肃省地矿局测绘院注册城乡规划师预招聘模拟试卷及答案详解一套
- 河北省承德市隆化县第二中学2023-2024学年九年级上学期期中考试物理试题(无答案)
- 2024年新人教版八年级上册物理全册教案
- 伤口造口专科护士进修汇报
- MOOC 实验室安全学-武汉理工大学 中国大学慕课答案
- 彩钢房建造合同
- 2型糖尿病低血糖护理查房课件
- 医院物业服务投标方案
- 高压燃气管道施工方案
- 国家免疫规划疫苗儿童免疫程序说明-培训课件
- GB/T 13298-1991金属显微组织检验方法
- 劳动人事争议仲裁案例分析与问题探讨课件
评论
0/150
提交评论