




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第15讲指针定义和引用,一、指针和地址的概念1.内存与地址2.指针和指针变量3.对内存单元的访问方式二、指针的运算1.指针变量的定义2.指针运算符3.指针变量的初始化4.指针的运算三、指针变量作为函数参数,1.内存与地址,存储单元:存放一个字节数据的存储器。存储单元的内容:存储单元内的数据。内存地址:存储单元的编号。,一、指针和地址的概念,x=10;y=a;z=9.8;,2.指针和指针变量,指针:就是变量的内存地址,是一个常量。指针变量:就是存放变量内存地址的变量。变量的指针:变量的地址。当把某个变量x的地址存入指针变量p后,我们就说这个指针变量p的指针指向该变量x。,3.对内存单元的访问方式:,直接访问方式:通过变量名访问。间接访问方式:通过变量的指针访问。,1.指针变量的定义,格式:类型说明符*指针变量名1,;例:int*p1,*p2;说明:1)指针变量的名是p1和p2若写成:int*p1,p2;则p2被定义为整型变量而非整型指针变量。,二、指针的运算,格式:类型说明符*指针变量名1,;例:int*p1,*p2;说明:2)指针变量的类型是定义时所规定的指向变量的类型,如p1、p2只能指向整型变量,不能指向实型和字符型变量。,格式:类型说明符*指针变量名1,;例:int*p1,*p2;说明:3)指针变量的值表示的是它所指向变量的地址。若一个指针变量为0(NULL),表示该指针为空,说明它没有指向任何变量(存储单元)。,2.指针运算符,取地址运算符“p1=,p1=,*运算符间接地存取指针变量所指向的变量的值,例:p1=,i,p1,*p1,10,/*声明整型指针变量p*/p=,程序运行结果:*p=50,p=ffea=100,a=ffe,例指针运算符的使用,main()int*p1,*p2,x1,x2;scanf(%d%d,输入:12输出:*p1=1,*p2=2*p1=1,*p2=1,例,有:p1=,p2=,p1=,程序运行结果:*p1=10,*p2=20*p1=20,*p2=10 x1=20,x2=10,例两个指针变量交换指向。main()int*p1,*p2,*s;intx1=10,x2=20;p1=,程序运行结果:*p1=10,*p2=20*p1=20,*p2=10,算术运算:移动指针,移动指针:对指针变量进行加上或减去一个整数、或通过赋值运算,使指针变量指向相邻的存储单元。指针移动是以它指向的数据类型所占的字节数为移动单位。只有当指针指向一串连续的存储单元时,指针的移动才有意义。才可以将一个指针变量与一个整数n做加减运算。,例:main()inta10=0,1,2,3,4,5,6,7,8,9;intn=6,*p1,*p2;p1=p2=a;printf(“1)*p1=%d,*p2=%dn,*p1,*p2);p1=p1+n;p2+;printf(“2)*p1=%d,*p2=%dn,*p1,*p2);,程序运行结果:1)*p1=0,*p2=02)*p1=6,*p2=1,-p1;p1=p1-4;n=p1-p2;printf(“3)*p1=%d,*p2=%d,n=%dn,*p1,*p2,n);,程序运行结果:3)*p1=1,*p2=1,n=0,两个指针的比较运算,两个指针的比较运算经常用于数组,以判断两个指针所指数组元素位置的先后。例:若pipj,则pi所指的地址在pj所指的地址之后。若pi=pj,则pi所指的地址与pj所指的地址相同。若pi!=pj,则pi所指的地址与pj所指的地址不同。,三、指针变量作为函数参数,在C语言中,函数参数可以是指针类型。当指针变量作函数参数,其作用是将一个变量的地址传送到另一个函数中。过程为:形参从实参获得了变量的地址,即形参和实参指向同一个变量,当形参指向的变量发生变化时,实参指向的变量也随之变化。,指针作为函数参数举例:,swap(int*x,int*y)inttemp;temp=*y;*y=*x;*x=temp;/*改变形参所指向变量的值*/main()inta=10,b=20;printf(1)a=%d,b=%dn,a,b);swap(,程序运行结果:1)a=10,b=202)a=20,b=10,说明如下:,1)主函数:定义变量a、b。并初始化,2)主函数:调用swap(),将实参的值(地址)传递给形参,使得形参x,y分别指向实参a,b。,3)swap()函数:交换形参*x、*y的值。即a,b的值。,例交换两个元素的值,swap(int*x,int*y)int*p;p=x;x=y;y=p;/*改变形参的值*/main()inta=10,b=20;int*p1=,程序运行结果:1)a=10,b=202)a=10,b=20,说明如下:,1)主函数:定义变量a、b,并初始化。,2)主函数:定义指针变量p1、p2,并初始化。使得p1,p2分别指向a,b。,3)主函数:调用swap(),将实参的值(地址)传递给形参,使得形参x,y分别指向变量a,b。,4)swap()函数:交换形参x、y的值地址。使得x、y的指向发生改变,由于实参对形参是单向传递,因此,形参的变化对实参没有影响。,例交换两个元素的值。,swap(int*x,int*y)int*p;*p=*x;/*指针p未赋值*/*x=*y;*y=*p;main()inta=10,b=20;swap(,例用选择法将任意10个整数按从大到小顺序排序。,main()int*p,i,a10;for(i=0;i10;i+)scanf(%d,a+i);p=a;sort(p,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB61T 880-2014 玉米 秦龙468规范
- 加盟分店合同(标准版)
- 出租交房合同(标准版)
- 分布式光伏能源存储与管理方案
- 仓储(仓库)管理合同2篇
- 2025上海青浦兰生学校秋季招聘考试参考试题及答案解析
- 混凝土抗裂技术实施方案
- 2025年山东海洋文化旅游发展集团有限公司公开招聘工作人员考试参考试题及答案解析
- 2025南昌东湖城市建设投资发展有限公司招聘2人备考练习题库及答案解析
- 2025年甘肃省定西市岷县西寨镇卫生院招聘乡村医生考试参考试题及答案解析
- 输变电工程监督检查标准化清单-质监站检查
- 2025年中国东方航空集团招聘笔试参考题库含答案解析
- 临床研究课题验收报告
- 扳机点(激痛点)疗法(理论及实操演示附全身激痛点分布图)
- 2024ESC心房颤动管理指南解读
- 村级换届业务培训
- 《预防未成年人犯罪》课件(图文)
- 医院数据分级分类制度
- 常见皮肤病的治疗课件
- GB/T 22838.5-2024卷烟和滤棒物理性能的测定第5部分:卷烟吸阻和滤棒压降
- 议论文阅读训练10篇(附答案及解析)
评论
0/150
提交评论