第8章 指针(1-1).pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 指针(1-1)

8.1 指针与变量 解释如下程序段: int a=10, *p=a; *p=15; 结果:a=? p=? * * 指针是C语言中的一个重要特色。对指针的正确理解和灵活运用,是成功地进行C语言程序设计的关键环节。 指针可有效地表示复杂的数据结构;能动态分配内存,直接处理地址;函数调用时批量参数的传递等。指针的正确应用能使程序具有简洁明了、结构紧凑、运行高效等优点。 由于可处理内存地址,指针的滥用又往往会造成复杂的程序故障,甚至会导致系统的崩溃。因此,认真学习和掌握指针的正确应用,对设计C程序有着重要的意义。 一. 直接访问: 为了便于内存管理,内存区的每一个字节有一个编号,这个编号被称为“地址”。根据变量类型的不同,若干字节为一个存储单元,每个存储单元对应一个地址,这个地址是存储单元的首字节地址。 指针的概念 计算机自动把变量名和它的存储单元联系起来,程序中通常用变量名来代表那个存储单元,无需涉及地址(这种情况属于“取值”操作;注意:如果需要获得变量的地址,则必须使用取地址运算符)。 例如:short x; char c; float y; 通知编译共有3个变量,根据类型为每个变量分配相应的存储单元,即变量名与用户数据区的某个地址单元建立了对应关系,然后可对3个变量赋值。 scanf(“%d”,x); 1). 找到x的起始地址1001 2). 将从键盘上输入的值存 入1001和1002对应的单元中 1001 1002 1003 1004 1005 1006 1007 … 2001 2002 x c y printf(“%d”,x); 1).找到x的地址1001 2).将x的值从1001,1002对应的单元中取出,送到显示器上显示。 这种按变量名存取变量值的方式称为“直接访问”方式。 1001 1002 1003 1004 1005 1006 1007 … 2001 2002 x c y 1). 从p变量的起始地址1010中 取出x的起始地址1001。 2). 从地址为1001和1002的单 元中取出x的值50。 … 1010 1011 1012 1013 x 1001 p 1001 1002 1003 1004 50 例如:int x,*p; x=50; p=x; P中存放的是x的地址1001,间接访问方式取x值的步骤: 二. 间接访问: C允许用一种特殊的变量专门存放 另一个变量的地址。 P变量被称为指针变量(简称指针)。 每个地址(无符号整数)用4个字节存放。 在本章之前介绍的内容都属于直接访问方式,即直接操作变量名即可。在本章中主要利用指针,采用间接访问方式,可实现其它数据类型难以实现的复杂操作。 int *p1; float *p2; 该定义表示p1、p2是指针变量,p1用来指向整数单元(地址),p2用来指向单精度浮点数单元(地址)。 指针变量的定义 对象的地址 p *p 通常将指针与其所指向的对象这样表示: 例如: 10 p a, *p a的地址 void main() { int a=10,*p; p=a; printf(“%d”, *p); } p中存放的是某个单元的地址,*p表示那个单元(对象)——要注意int *p;与*p的区别。 1. 指针运算符 格式:变量 功能:取出指定变量(存储单元)的地址,单目, 结果为地址。 说明:8 , (x+6) 错 格式:*(地址表达式) 功能:得到某地址单元中的值,单目,结果为数据。 为了便于地址操作,C提供了两个专用运算符 ——和*: 指针的运算 与*作用相反,级别相同,从右→左运算。使用*返回的是a的值,故可理解为*p是变量a的别名,即: printf(“%d”,*p);== printf(“%d”,a); int a=10,*p; p=a; 例如: 注意: float *p, x; p=x; printf(“%f”, *p); 两个*p表示的含义不同 同普通变量一样,指针的存储类型有三种:

文档评论(0)

xiaolan118 + 关注
实名认证
文档贡献者

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档