- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言复习C10
第十章 指针;A、B、C三人欲使用某旅馆的房间。A先到达旅馆,在服务台登记房间,房号是518。然后A电话通知B,但没有通知C。
B和C该怎样找到A呢?
B可以直接到518找到A。
C可以从旅馆的服务台查询到A的房号是518,再找到A。;10.1 指针的概念;┇;二、变量的访问方式;例:int i,j,k,*p; /*定义p为指针变量*/
i=3; j=i*2; /*变量的直接访问*/
p=i; /*将变量i的地址赋给指针变量p*/
k=*p+j; /*以p的值作为地址对i间接访问*/
┇ ;三、指针变量;指针变量的性质
★ 定义后,编译时为其分配一个存储单元,该单元的字节数与编译系统存储模式有关:隐含的小模式下为2字节,大模式为4字节;
★ 指针变量中只能存放指针(地址);
★ 按指针变量所指向的对象,指针变量可分类为:
指向变量/数组元素的指针变量(存放变量指针)
指向数组行的指针变量(存放数组某行指针)
指向函数的指针变量(存放函数入口地址);10.2 指针变量的定义和引用;二、指针变量的赋值;赋值规则:
1)赋值的指针单位要一致;
★指向变量的指针变量=变量或数组元素的指针
★指向数组行的指针变量=数组行的指针
★指向函数的指针变量=函数的指针
2)赋值的指针类型要一致;
如:指向整型指针变量=整型变量的地址
注意:
不能随意将一个整数赋给指针变量,只能将有效的指针值赋给指针变量。
如:p1=100; 使p1指向了100号存储单元,而100号单元对用户是不透明的,若出现利用p1向100号单元赋值的情况将导致对系统或用户程序的破坏。;三、指针变量的应用;2 、运算规则;例:计算一个数的倍数。
#include stdio.h
void main( )
{ int a, b; int *p1, *p2;
p1=a;
p2=b;
scanf(%d, a);
*p2= *p1 *2;
printf(a=%d,b=%d\n, *p1, *p2);
printf(a:%u, %u\n, a, p1);
}
5↙
a=5,b=10
a:65488, 65488 ;使用和*,要注意区分几种情况:
1)以下两个赋值的含义
p1=a; /*将地址量赋给指针变量*/
*p1=a; /*将变量a的值赋给p1指向的变量*/
2)若已执行p1=a; *p1表示a
3)*a表示a
4)若有m=5; p1=m; 区分下列运算含义
★ (*p1)++ ? m++; p1保持指向m,m自加1为6。
★ *p1++ *与++同为二级,结合方向自右而左,相当于*(p1++),即先引用p1的值m, 而后p1自加1不再指向m ;
*(m)得m的值5。;写出下面各表达式的结果,并找出具有等价关系的对子。
int a=5,*p=a;
*p *a (*p)++ a
a *p++ *(p++) a++;指向变量的指针变量举例:;例:利用指针变量将a、b按先大后小的顺序输出。
方法1:不改变a、b的值,而使p1指向值大的变量。
#include stdio.h
void main( )
{ int *p1, *p2, *p, a, b;
scanf(%d,%d, a, b);
p1=a; p2=b;
if(ab)
{p=p1; p1=p2; p2=p;} /*交换p1、p2*/
printf(max=%d,min=%d\n, *p1, *p2);
};方法2:不改变指针变量的指向,而使a为大数。
#include stdio.h
void main( )
{ int *p1, *p2, t, a, b;
scanf(%d,%d, a, b);
p1=a; p2=b;
if(*p1*p2)
{t=*p1; *p1=*p2; *p2=t;} /*交换a、b*/
printf(max=%d,min=%d\n, *p1, *p2);
}
;四、指针变量作为函数参数;例:编写函数实现两个数的交换 ;#include stdio.h
您可能关注的文档
最近下载
- (沪科版2024)八年级物理全一册 《绪论》 课件.pptx
- 空巢老人PPT课件.pptx
- 暗黑2 符文之语图文版(按符文等级排列).doc VIP
- 《信息技术(基础模块)上册》 课件 《信息技术(基础模块)上册》 课件 项目一 信息技术应用基础.pptx VIP
- 医院医疗机构医疗垃圾分类与处理培训PPT.pptx VIP
- 股东对赌协议书 股东与股东的对赌协议优秀5篇.pdf VIP
- (2025秋新版)人教版数学三年级上册教学计划.pdf VIP
- (热门!)ISO22000食品安全管理体系认证审核需要准备的文件资料清单和重点关注项(可编辑).pdf VIP
- Unit 5 Celebrations 单元教学课件 中职高一英语高教版基础模块1.pptx
- 2024年秋季学期新精通版(三年级起)英语三年级上册课件 Unit 2 Lesson 2 .pptx VIP
文档评论(0)