- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第十章?指针
10.1指针的概念指针(pointer):是一个变量的地址。指针变量:是一个变量,其值是另一个变量的地址。任何变量都在计算机内存中占有一块内存区域,变量的值就存放在这块内存区域之中
一个变量的访问(访问是指取出其值或向它赋值)方式有两种:直接访问,通过变量名访问,如通过变量名i直接访问。间接访问,通过该变量的指针来访问,如通过i_pointer访问变量i。
指针变量的定义10.2变量的指针一、指针变量的定义指针变量有三个属性:(1)该指针变量指向的变量的类型。如i_pointer指向的变量i是整型。(2)该指针变量在内存中占多少内存单元。如i_pointer占两个内存单元,称为“近指针”,用near表示。如果该变量在内存中占4个内存单元,称为“远指针”,用far表示。如果未指定near或far,缺省是near。(指针变量在内存中要么占2个内存单元,要么占4个内存单元)。(3)该指针变量指向哪一个变量,即该指针变量的值是多少。如i_pointer的值是2000。指针变量定义的一般形式:类型标识符*标识符如:int*pointer_1,*pointer_2;
215例、inti,j;/*定义两个整型变量*/char*pointer_4;4float*pointer_3;3int*pointer_1,*pointer_2;6void*pointer_5;
指针变量的赋值:1例、2pointer_1=i;3pointer_2=j;4
也可以在定义指针变量的同时指定其初值,如:inta;int*p=a;pointer_1=100;注意,指针变量中只能存放地址,不能将一个非地址类型的数据(如常数等)赋给一个指针变量,如:
二、指针变量的引用有两个运算符可以引用指针变量:(1):取地址运算符。如pointer_1=i;(2)*:指针运算符。用于访问指针变量所指向的变量。*和是互逆运算例;i=3;直接访问ptr=i;*ptr=15;间接访问
说明:1、在定义指针变量时,还未规定它指向哪一个变量,此时不能用*运算符访问指针。只有在程序中用赋值语句具体规定后,才能用*运算符访问所指向的变量。inta;int*p;(未规定指向哪个变量)*p=100;这种错误称为访问悬挂指针(suspededpointer)。
正确的引用:*p=100;int*p;(未规定指向哪个变量)inta;p=a;(规定指向a)
inta,b,c;01int*p;(*表示定义指针)
p=a;02p=100;(*表示指针运算符)
c=a*b;(*表示乘法运算符)032、区分:*运算符在不同场合的作用,编译器能够根据上下文环境判别*的作用。
main()1{2int*p1,*p2,*p,a,b;3scanf(%d,%d,a,b);4p1=a;p2=b;5if(ab)6{p=p1;p1=p2;p2=p;}7printf(a=%d,b=%d\n,a,b);8printf(max=%d,min=%d\n,*p1,*p2);9}10[例10.2]输入a和b两个整数,按先大后小的顺序输出a和b。
if(ab){p=p1;p1=p2;p2=p;}程序说明:p1=a;p2=b;02p1指向较大值,p2指向较小值.01
三、指针变量作为函数的参数[例10.3]题目要求输入a和b两个整数,按先大后小的顺序输出a和b。
intswap(int*p1,int*p2){intp;?p=*p1;?*p1=*p2;?*p2=p;}?main(){inta,b;?int*pointer_1,*pointer_2;?scanf(%d,%d,a,b);?pointer_1=a;pointer_2=b;?if(ab)swap(pointer_1,pointer_2);?/*另一种调用swap()的形式是:?if(ab)swap(a,b);*/?printf(\n%d,%d\n,a,b);}?
[例10.4]输入a、b、c三个整数,按大小顺序输出。
intswap(int*pt1,int*pt2)
{intp;?
p=*pt1;?
*pt1=*pt2;?
*pt2=p;}?
intexcha
您可能关注的文档
最近下载
- 型钢悬挑卸料平台监理实施细则.doc VIP
- 2025版最新建设工程强制性条文汇编.pdf VIP
- (高清版)DG∕TJ 08-2105-2022 行道树栽植与养护技术标准.pdf VIP
- 无人机组装与调试:多旋翼无人机飞控系统组装调试PPT教学课件.pptx VIP
- 检验检测机构资质认定质量手册和程序文件(质量记录表格汇编).doc VIP
- 建筑机电安装培训.pptx VIP
- 初三物理课件第十六章 3节 电阻课件初三物理课件第十六章 第3节 电阻课件.ppt VIP
- 低空经济产业园招商引资与项目管理.docx VIP
- 燃气经营安全重大隐患判定标准课件.pptx VIP
- 2025年学校基孔肯雅热防控工作预案(精选模板).docx
文档评论(0)