- 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语言的一大特色,也是其能够得到广泛应用的重要原因之一。指针可以作为数组的地址,从而使数组的处理变得简洁;可以通过指针传递变量的地址给函数,从而实现调用函数后返回多个值;另外,指针还支持动态内存分配,使处理数值、字符数组的方法更为简单。 以前要访问内存中的变量,是通过变量名来引用变量的值。实际上,编译时每一个变量名都对应一个地址,在内存中不再出现变量名而只有地址。程序中若引用某变量,则系统找到其对应的地址后从中取出其值。 例如scanf(“%d”,b),其中的b指的是变量b的地址。执行scanf函数时,将从键盘输入的一个整数送到b所标志的存储单元中。 可以看到要访问变量,C系统必须按该变量的地址找到该变量的存储单元。因此可以说一个地址“指向”一个变量的存储单元。譬如说,地址1010指向变量a、1012指向变量b、1014指向变量c等。这种通过变量名或地址访问一个变量的方式称为“直接访问”方式(实际上通过变量名访问也就是通过地址访问)。 变量的“间接访问”方式“间接访问”方式就是把一个变量的地址放在另一个变量的存储单元中。如下图所示。 通过用一个地址变量存储某一普通变量的起始地址,进而指向一个普通变量。可以将它形象地表示为如图9-3所示的逻辑关系。 指针变量使用小结 定义指针变量后,该指针变量并未指向确定的变量。要想使一个指针变量指向一个确定的变量,必须将确定变量的地址赋给该指针变量。例如: int *p,i=3; p=i; 指针变量可以定义为指向实型、字符型或其他类型的变量。但一个指针只能指向与其相同类型的变量。例如: double *pd,d1,d2; /*pd为指向double型变量的指针*/ char *pc,c1,c2; /*pc为指向char型变量的指针 */ float *pf,f1,f2; /*pf为指向float型变量的指针*/ 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含义是不同的。在定义指针变量的语句①中的“*”不是运算符,它只是表示其后面的变量是一个指针类型的变量,是一个说明符。在程序的执行语句②中的“*”是指针运算符“*”,“*p”代表p指向的变量。(2)“”运算符与“*”运算符是互逆的。例如:“y=x;”与“y=*x;”两个语句是等效的。 3.对指针变量的操作在定义了一个指针变量之后,比如:int *p,a;我们就可以对该指针进行以下各种操作。(1)给一个指针变量赋予一个地址值。p=a; /*将int型变量a的地址赋给int型指针变量p*/(2)访问指针变量所指向的变量。scanf(%d,p); /*向p所指向的整型变量输入一个整型值*/printf(%d,*p); /*将指针变量p所指向的变量的值输出*/ 指针运算 指针变量是一种指向特定元素(地址)的变量,既然属于变量,那么自然可以进行变量的操作。但由于指针变量本身存放的是面向内存的某个地址,所以有关指针变量的运算是很有限的。一般来说,在C语言中允许指针变量进行的运算包括:(1)增1运算。(2)减1运算。(3)指针变量与整数的加减运算。(4)指针变量的相减运算。(5)指针变量的比较运算。 这是容易理解的,指针变量作为一个内存的地址变量,诸如乘、除、移位、相加,以及与浮点数的相加或相减操作显然是没有任何实际意义的。 有关指针变量的增1运算“++”和减1运算“??”,其含义与整型变量的增1和减1运算是有区别的。(1)指针变量的增1运算。如果我们已经定义了指针变量p,它的增1运算的具体格式如下:p++或++p 运算完成后,指针变量就指向原来对象的下一个同类型对象的地址。具体地说,如果 p指向数组元素a[i],那么经过p++或+
您可能关注的文档
- 第二课时√SectionA第二课时.ppt
- 北师大版三年级数学上册课件花边有多长1章节.ppt
- 第二课时SectionA2a-3c.ppt
- 第12课破解生命起源之谜111章节.ppt
- 第12课破解生命起源之谜z.ppt
- 信条信条课件.ppt
- 北师大版三年级数学上册课件花边有多长11章节.ppt
- 第12课时我国的经济制度与政治制度第12课时我国的经济制度与政治制度.ppt
- 北师大版三年级数学上册课件交通与数学.ppt
- 第12课时小数四则混合运算与简便计算.ppt
- 第二部分语法知识巩固第37讲复合句.ppt
- 第2版电子课件office2003版C语言第2版第9章结构2003版.ppt
- 第二部分阅读之答题要点和答题模板第二讲说明文阅读的答题要点和答题模板.ppt
- 第2版电子课件office2003版C语言第2版第10章文件2003版.ppt
- 第二部分阅读之答题要点和答题模板第六讲综合性学习的答题要点和答题模板.ppt
- 第2次课02文件的基本操作.ppt
- 第二部分阅读之答题要点和答题模板第三讲议论文阅读的答题要点和答题模板.ppt
- 第2单元5.北京喜获2008年奥运会主办权.ppt
- 第2单元5.词两首.ppt
- 第二部分专题聚焦专题八生命系统的结构层次.ppt
文档评论(0)