- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 指针 7.1指针的概念 7.2变量的指针与指向变量的指针变量 7.3数组的指针 7.4字符串的指针与指向字符串的指针变量 7.5指针数组和指向指针的指针 7.6函数的指针 7.7指针的应用 7.1指针的概念 指针是C语言中的一种数据类型,它表示变量的存储地址。也就是说,变量的存储地址是变量的指针(注意:变量的指针是一个常量)。用指针类型定义的变量,称为指针变量。指针变量同普通变量一样占用存储空间,与普通变量不同的是,指针变量的存储空间存放的不是普通的数据,而存放的是一个地址。 指针是一个存放地址的变量,而指针指向的对象则是要处理的数据。*和是指针的两个运算符。 1.是取存储变量的地址; 2.*是返回存储地址中的值。 7.2变量的指针与指向变量的指针变量 7.2.1 指针变量的定义 7.2.2 指针变量的使用 7.2.1 指针变量的定义 变量的指针就是变量的地址,它是一个常量。可以定义一个指向一个变量的指针变量。 指针变量在使用之前也需要先定义,指针变量定义的一般格式如下: 数据类型 *指针变量名; 可以看出,定义一个指针变量包含三个方面内容: 1.指针变量的名称。 2.指针类型标志。指针变量名前面的“*”表明是一个指针变量; 3.指针的数据类型。表明指针变量所指向的变量的数据类型。 7.2.2 指针变量的使用 1.通过取地址运算符“”获得地址值 “”是用来求变量对象的地址,利用它可以把一个变量的地址赋值给一个指针变量。 取地址运算符“”只能用于变量的取地址运算,不能用于表达式和常量上,并且变量对象的类型必须与指针变量的基类型一致。 7.2.2 指针变量的使用 2.通过指针变量获得地址值 可以通过赋值运算,把一个指针变量的值赋值给另一个指针变量,从而使这两个指针变量指向同一个地址。看下面程序段: int x,*p1,*p2; x=10; p1=x; p2=p1; 首先通过语句p1=x;指针p1取得了变量x的地址,然后由语句p2=p1;指针变量p2通过指针变量p1也获取了变量x的地址;p1和p2同时指向整型变量x。 7.2.2 指针变量的使用 除了可以给指针变量赋一个实际地址之外,还可以给指针变量赋值为“空值”,如: int *p; p=NULL; 使用NULL时,应在程序的前面加预编译指令:#include “stdio.h”。NULL的值为0,上面语句等价于:p=’\0’;或p=0; 这时指针p并不是指向地址为0的存储单元,而是一个确定的值:“空”。 7.3数组的指针 7.3.1 指向数组的指针 7.3.2 通过指针引用数组元素 7.3.3指针运算 7.3.4数组名作为函数参数 7.3.5指向二维数组的指针 7.3.1 指向数组的指针 可以定义一个指针指向数组,也就是使指针指向数组的第一个元素。例如: int a[10]; int *p; p=a[0]; /*把数组元素a[0]的地址赋值给p*/ 既然数组名代表数组中第一个元素(即a[0])的地址,那么,下面两条语句等价: p=a[0]; p=a; 其功能都是将指针变量p指向数组的首地址。 7.3.2 通过指针引用数组元素 如果定义了一个数组a、一个指向数组a的指针p,如: int a[10],*p; p=a; 则引用数组元素的方式有两种: 1.下标法,如:a[i]、p[i]等形式; 2.指针法(地址法),如*(a+i)、*(p+i)等形式。 7.3.3指针运算 1.++p、p++或p=p+1:p指向下一个元素a[1]。如果再执行*p,则取出a[1]的值。 2.*++p和*p++:对于*++p是先执行++p,即p指向下一元素a[1],然后取出a[1]的值。对于*p++,由于++和*的优先级相同,其结合方向是自右至左,因此等价于*(p++),其作用是先执行*p,即a[0],然后p再加1,指向a[1]。 3.(*p)++:表示p所指的单元值加1,而不是指针p加1。 4.如果 p=a[i];则: *(p--)相当于a[i--],即a[i];然后p指向a[i-1]。 *(++p)相当于a[++i],即a[i+1];p指向a[i+1]。 *(--p)相当于a[--i],即a[i-1];p指向a[i-1]。 5.两个指针变量相减 若两个指针变量指向同一个数组元素,则两指针变量值之差是两个指针之间的元素个数再加上1。 7.3.4数组名作为函数参数 实参和形参的对应关系有下列四种情况: (1)实参和形参都用数组名。 (2)实参用数组名,形参用指针变量。 (3)实参和形参都用指针变量。 (4)实参用指针变量,形参用数组名。 7.3.5指向二维数组的指针 1.二维数组元素的地址 设有一个3行4列的二维数组a,定义如下: int a[3][4]={{1,2,3
您可能关注的文档
- C语言程序设计实例教程潘志安朱运乔余小燕第8章节函数.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第9章节编译预处理.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第10章节指针.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第11章节结构体共用体及枚举类型.ppt
- C语言程序设计实例教程潘志安朱运乔余小燕第12章节文件I/O.ppt
- C语言程序设计实用教程周虹课件第1章节程序设计及C语言概述.ppt
- C语言程序设计实用教程周虹课件第2章节C语言的基本数据及其运算.ppt
- C语言程序设计实用教程周虹课件第11章节位运算.ppt
- C语言程序设计实用教程周虹课件第12章节文件.ppt
- C语言程序设计孙淑霞罗奕主编C语言程序设计09763第八章节.ppt
- C语言程序设计与数据结构周成义等第9章节.ppt
- C语言程序设计与数据结构周成义等第10章节.ppt
- C语言程序设计与应用教程第二版周虹闫瑞峰王永利主编10394-C语言程序设计与应用教程第二版.ppt
- C语言程序设计与应用教程第二版周虹闫瑞峰王永利主编第1章节程序设计基础.ppt
- C语言程序设计与应用教程第二版周虹闫瑞峰王永利主编第4章节选择结构程序设计.ppt
- C语言程序设计与应用教程第二版周虹闫瑞峰王永利主编第6章节数组.ppt
- C语言程序设计与应用教程第二版周虹闫瑞峰王永利主编第12章节文件.ppt
- C语言程序设计主讲教师唐龙教授清华大学计算机科学与技术.ppt
- C语言教学课件总.ppt
- C语言内涵教程周二强著第1章节C语言和计算机.ppt
最近下载
- 15MR105城市道路与开放空间低影响开发雨水设施(OCR).pdf VIP
- 高考数学圆锥曲线常用二级结论.pdf VIP
- 住院患者跌倒护理风险评估与护理指导意见.pdf VIP
- 《放疗副作用及应对》课件.ppt VIP
- GB50209-2010建筑地面工程施工质量验收规范(新).pdf VIP
- 新苏教版六年级科学上册 第一单元《物质的变化》测试卷(A卷).docx VIP
- 新苏教版六年级科学上册第一单元《物质的变化》测试卷及答案.pdf VIP
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 煤矿用防爆电气设备防爆检查标准-培训课件.pptx
- 半导体物理学(第8版)刘恩科课后习题答案解析.pdf
文档评论(0)