- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十二章 指针 12.1 指针与指针变量 如:int a=1, b=2; float x=3.4, y = 4.5 ; double m=3.124; char ch1=a‘, ch2=b; 12.1 指针与指针变量 指针定义的格式: 类型说明符 *指针名; *表示这是一个指针变量, 变量名即为定义的指针变量名; 类型说明符表示本指针变量所指向的变量的数据类型,也就是说一个指针变量只能指向同一类型的变量。 如:int *p1; 表示p1是一个指针变量,它的值是某个整型变量的地址。或者说p1指向一个整型变量。至于p1究竟指向哪一个整型变量,应由向p1赋予的地址来决定。 赋值形式: 变量名; &:取地址符 a表示变量a的地址,b表示变量b的地址。变量本身必须预先说明。 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。 指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误。 设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: 1)指针变量初始化的方法 int a; int *p=a; 2)赋值语句的方法 int a; int *p; p=a; 不允许把一个数赋予指针变量,下面的赋值是错误的: int *p; p=1000; 被赋值的指针变量前不能再加“*”说明符,如写为*p=a 也是错误的。 指针变量只能进行赋值运算和部分算术运算及关系运算。 (1)取地址运算符:是单目运算符,其结合性为自右至左,其功能是取变量的地址。 (2)取内容运算符*:是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。在“*”运算符之后跟的变量必须是指针变量。 注意:在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量。 [例12.1]指针变量程序举例。 main( ) { int *p1,*p2,i1,i2; scanf(“%d, %d”,i1,i2); p1=i1; p2=i2; printf(“%d, %d\n”,*p1,*p2); p2=p1; printf(“%d, %d\n”,*p1,*p2); } 若输入: 3,5 则输出: 3,5 3,3 [例12.2] 从键盘输入两个整数,按由大到小的顺序输出。 main( ) { int *p1,*p2,a,b,t; scanf(%d ,%d ,a,b) ; p1=a; p2=b; if(*p1*p2) { t=*p1;*p1=*p2;*p2=t;} printf(%d,%d\n,a,b) ; } 使用指针类型做函数的参数,实际向函数传递的是变量的地址。由于函数中获得了所传递变量的地址,在该地址空间的数据当函数调用结束后被物理地保留下来。因此,如果希望函数间传递的是地址,实参用变量的地址或指针变量,形参用指针变量。 [例12.3] 利用指针变量作为函数的参数,用函数的方法再次实现上述功能。 main ( ) { void change(); int *p1,*p2,a,b,*t; scanf(%d,%d,a,b) ; p1=a; p2=b; change(p1,p2); / *函数调用* / printf(%d,%d\n,*p1,*p2); } void change(int *pt1,int *pt2) { int t; if(*pt1*pt2) { t=*pt1;*pt1=*pt2;*pt2=t; } return; } 指向数组元素的指针变量的定义与指向变量的指针变量的定义相同 如:int a[10]; int *p; 对该指针元素赋值: p=a[0]; 把a[0]元素的地址赋给指针变量p,即p指向a数组的第0号元素, 数组名代表数组的首地址,也就是第一个元素的地址。因此,p=a[0];与p=a;等价。
您可能关注的文档
- 第11章 FTP 服务器.ppt
- 第11章 linux.ppt
- 第11章 linux DNS.ppt
- 第11章 Linux操作系统基础.ppt
- 第11章 shell程序设计.ppt
- 第11章 Shell的使用.ppt
- 第11章 Squid代理服务的配置与应用.ppt
- 第11章 Visual Basic 6.0中的数据库编程.ppt
- 第11章 并发控制.ppt
- 第11章 函数二.ppt
- 执业药师之《药事管理与法规》检测卷讲解含答案详解(最新).docx
- 执业药师之《药事管理与法规》全真模拟模拟题及答案详解(全国通用).docx
- 2025年执业药师之《西药学综合知识与技能》模拟试题附参考答案详解(突破训练).docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺模拟题库含答案详解(培优a卷).docx
- 2025年执业药师之《西药学综合知识与技能》真题精选附答案详解(名师推荐).docx
- 执业药师之《药事管理与法规》强化训练模考卷带答案详解.docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺测试卷包附参考答案详解(b卷).docx
- 2025年执业药师之《西药学综合知识与技能》模考模拟试题及参考答案详解(夺分金卷).docx
- 2025年执业药师之《西药学综合知识与技能》真题含答案详解【b卷】.docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺模拟题库带答案详解(b卷).docx
最近下载
- 贵州省事业单位人员聘用合同书.doc VIP
- 4.建筑施工企业项目负责人安全生产考核合格证书样本.pdf VIP
- 贵州省事业单位人员聘用合同书范本.docx VIP
- 皮带接头硫化上.pptx VIP
- 陕西省事业单位合同5篇.docx VIP
- 贵州省事业单位人员聘用合同书(合同范本).pdf VIP
- SYT 4201.2-2019 石油天然气建设工程施工质量验收规范 设备安装工程 第2部分:塔类.docx VIP
- SYT 4201.4-2019 石油天然气建设工程施工质量验收规范设备安装工程 第4部分:炉类.docx VIP
- 解读2021新安全生产法课件PPT(内容完整).pptx VIP
- SY_T 4201.3-2019 石油天然气建设工程施工质量验收规范 设备安装工程 第3部分:容器类.docx VIP
文档评论(0)