- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 指针 9.1 地址和指针 9.2 一维数组的指针表示方法 9.3 二维数组的指针表示方法 9.4 函数参数与指针、数组 9.5 返回指针值的函数 9.6 指向函数的指针变量 9.7 指针与字符串 9.8 指针数组 9.9 指向指针的指针 9.10 main函数中的参数 9.11 指针数据小结 课后练习 指针的定义与运用是C语言的一大特色,也是其能够得到广泛应用的重要原因之一。指针可以作为数组的地址,从而使数组的处理变得简洁;可以通过指针传递变量的地址给函数,从而实现调用函数后返回多个值;另外,指针还支持动态内存分配,使处理数值、字符数组的方法更为简单。 9.1 地址和指针9.1.1 指针概述1.变量的“直接访问”方式凡在源程序中定义的变量,在编译时系统都给它们分配相应的存储单元,每个变量所占的存储单元都有确定的地址。具体的地址是在编译时分配的。例如:short a=1,b=2;float c=3.4,d=5.6;char e=x,f=y; 以前要访问内存中的变量,是通过变量名来引用变量的值。实际上,编译时每一个变量名都对应一个地址,在内存中不再出现变量名而只有地址。程序中若引用某变量,则系统找到其对应的地址后从中取出其值。 例如scanf(“%d”,b),其中的b指的是变量b的地址。执行scanf函数时,将从键盘输入的一个整数送到b所标志的存储单元中。 可以看到要访问变量,C系统必须按该变量的地址找到该变量的存储单元。因此可以说一个地址“指向”一个变量的存储单元。譬如说,地址1010指向变量a、1012指向变量b、1014指向变量c等。这种通过变量名或地址访问一个变量的方式称为“直接访问”方式(实际上通过变量名访问也就是通过地址访问)。 2.变量的“间接访问”方式“间接访问”方式就是把一个变量的地址放在另一个变量的存储单元中。如图9-2所示。 3.指针概念的引出 通过用一个地址变量存储某一普通变量的起始地址,进而指向一个普通变量。可以将它形象地表示为如图9-3所示的逻辑关系。 9.1.2 指针变量的定义 定义指针变量的语句和定义其他变量或数组的语句格式基本相同,定义的同时,可以给其赋初值。具体格式为:存储类型 数据类型 *指针变量名1=初值1,…; (1)定义一个指针变量时,必须在一个变量名前加指针说明符“*”。注意,指针变量名本身不含“*”号。 (2)在定义了一个指针变量后,系统为之分配一个存储单元,这个存放指针变量的存贮单元一般都占有固定的字节(如16位机2个字节)。 (3)相同类型的指针变量和普通变量,可以放在一起说明,如:float f,*pf;int *pi,i; (4)指针变量和普通变量完全一样,由它的定义位置决定指针的作用域和生命期。 (5)定义指针变量后,该指针变量并未指向确定的变量。要想使一个指针变量指向一个确定的变量,必须将确定变量的地址赋给该指针变量。例如: int *p,i=3; p=i;(6)指针变量可以定义为指向实型、字符型或其他类型的变量。但一个指针只能指向与其相同类型的变量。例如: double *pd,d1,d2; /*pd为指向double型变量的指针*/ char *pc,c1,c2; /*pc为指向char型变量的指针 */ float *pf,f1,f2; /*pf为指向float型变量的指针*/ 9.1.3 指针变量的引用1.“”运算符和“*”运算符在C语言中提供了两个有关指针的运算符:(1)“”运算符,称为“取地址运算符”。格式:变量名功能:取某一“变量”的地址。例如,x的值为变量x的地址。(2)“*”运算符,称为“指针运算符”,也称“间接运算符”。格式:*指针变量名功能:取某“指针变量”所指向的变量中的内容。例如:float a,b,*p; /*定义p为指向实型变量的指针变量*/a=1.23;p=a; /*把变量a的地址赋给p*/b=*p; /*把p所指向的变量中的内容赋给b*/printf(%.2f,%.2f,b,*p); /*运行结果为:1.23,1.23*/ 2.使用指针运算符应注意的问题(1)指针变量定义中“*”运算符应注意的问题。对于下面两个语句: int a,*p=a; ① *p=5; ② 语句①中用到的*p与语句②中用到的*p含义是不同的。在定义指针变量的语句①中的“*”不是运算符,它只是表示其后面的变量是一个指针类型的
您可能关注的文档
- Common Activities Common Activities新.ppt
- CorelDRAW X3平面设计实用教程 张平 张先俊 第1章新.ppt
- CorelDRAW X3平面设计实用教程 张平 张先俊 第2章新.ppt
- CorelDRAW X3平面设计实用教程 张平 张先俊 第4章新.ppt
- CorelDRAW X3平面设计实用教程 张平 张先俊 第5章新.ppt
- CorelDRAW X3平面设计实用教程 张平 张先俊 第7章新.ppt
- CorelDRAW X3平面设计实用教程 张平 张先俊 第9章新.ppt
- CorelDRAW X4平面设计实例教程 第1章教程 新.ppt
- CorelDRAW X4平面设计实例教程 第2章教程 新.ppt
- CorelDRAW X4平面设计实例教程 第3章教程 新.ppt
文档评论(0)