《C语言程序设计与数据结构》第8章 指针.ppt

《C语言程序设计与数据结构》第8章 指针.ppt

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C语言程序设计与数据结构》第8章 指针

C语言程序设计与数据结构 第8章 指 针 教学提示:? 指针是C语言的精华部分,通过利用指针可以描述复杂的数据结构,很方便地使用数组和字符串,并象汇编语言一样处理内存地址,使程序精练、高效。另一方面,不正确的指针使用是危险的,轻则影响到结果的正确性,重则会导致系统瘫痪。对初学者来说除了要正确理解有关概念外,还必须要多编程多上机调试。 教学要求: 本章要求掌握指针变量的定义,理解地址就是指针的的概念,一维数组的指针与指向一维数组的指针的区别,指针与字符串、函数的关系,指针变量作函数参数时参数的传递方式,返回指针值的函数定义形式以及指向函数的指针变量定义。 8.1 地址与指针概述 如果我们在前面的编程中定义或说明了变量,编译系统就为已定义的变量分配相应的内存单元(一般把存储器中的一个字节称为一个内存单元),为了能正确地访问这些内存单元,可以为每个内存单元编上号,根据一个内存单元的编号就可准确地找到该内存单元。内存单元的编号也叫做地址,通常也把这个地址称为指针。也就是说,每个变量在内存中会有固定的位置,即具体的地址。变量的数据类型不同,它所占的内存单元的数目也不相同。 若我们在程序中已有如下定义: int a=1, b=2; float x=3.4, y = 4.5 ; double m=3.124; char ch1=a, ch2=b; 那么编译系统可以按下面方法为变量分配内存。变量a ,b是整型变量,在内存中各占2个字节;x , y是实型,各占4个字节;m是双精度实型,占8个字节;ch1 , ch2是字符型,各占1个字节。由于计算机内存是按字节编址的,设变量的存放从内存2000单元开始存放,则编译系统对上述变量在内存中的一种可能存放情况如图8.1所示。变量a 在内存的地址是2000,占据两个字节2000和2001后,变量b的内存地址就为2002。以此类推,变量m的内存地址为2012等。另外内存地址都是整形数,不会出现小数。 指针变量 存放变量地址的变量称为指针变量。如果将变量a的地址保存在内存的特定区域,用变量pa来存放这些地址,这样的变量pa就是指针变量。因此,一个指针变量(如pa)的值就是某个变量(如a)的地址(也称为某变量的指针),也称为pa指向变量a,或者说pa是指向变量a的指针变量。既然pa是变量,那么指针变量pa不但可以存放变量a的地址,也可以存放变量b的地址。 有些书上把指针变量简称为指针。为了避免混淆,我们约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。 定义指针变量 对指针变量的类型说明包括三个内容: 指针类型说明,即定义变量为一个指针变量;? 指针变量名; 变量值(指针)所指向的变量的数据类型。 其一般定义形式为:? 类型说明符? *变量名; 其中,*表示其后面的变量是一个指针变量,变量名即为定义的指针变量名,类型说明符表示指针变量所指向的变量的数据类型。 定义指针变量 例如:int *p1; 其中的*表示p1是一个指针变量,变量名为p1,它的值只能是某个整型变量的地址,或者说p1指向一个整型变量。至于p1究竟指向哪一个整型变量,应由向p1赋予的地址来决定。但一个指针变量只能指向同一种类型的变量,如下面的p3 只能指向浮点型变量(如前面的x或y)而不能指向字符型变量。 再如: double *p2; /*p2是指向double型变量的指针变量*/ float *p3; /*p3是指向浮点型变量的指针变量*/ char *p4; /*p4是指向字符型变量的指针变量*/ 指针变量的赋值与引用 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误。 设已定义下面两个变量: int a; int *p,*q; /* 定义指向整型变量的指针变量p和q */ 如果想把整型变量a的地址赋予指针变量p,首先要知道a 的地址。C语言提供了一些运算符来实现此功能。 1、取地址运算符 2、指针运算符*(或称“间接访问”运算符、取内容运算符) 取地址运算符 在C语言中,变量的地址是由编译系统分配的,用户无需知道

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档