C语言程序设计基础与实训教程第9章节.pptVIP

C语言程序设计基础与实训教程第9章节.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 指 针 主要内容 指针和地址的概念 变量的指针和指向变量的指针变量 数组的指针和指向数组的指针变量 字符串的指针和指向字符串的指针变量 函数的指针和指向函数的指针变量 返回指针值的函数 指针数组和指向指针的指针 9.1 指针和地址的概念 如果在程序中定义了一个变量,在编译时系统根据程序中定义的变量类型,给这个变量分配一定长度的内存单元。例如,一般微型计算机使用的C系统为整型变量分配2个字节,为实型变量分配4个字节,为字符型变量分配1个字节。内存区的每一个字节有一个编号,这就是“地址”,相当于旅馆的房间号。在地址所标志的内存单元中存放数据,相当于在旅馆的各个房间中居住旅客一样。 9.1 指针和地址的概念 在程序中一般是通过变量名来对内存单元进行存取操作的。但是实际上,程序经过编译后,将变量名转换成变量的地址,对变量值的存取是通过地址进行的。所以,需要弄清楚内存单元的地址与内存单元的内容这两个概念。 9.1 指针和地址的概念 2000200220043000…2000……369内存用户数据区变量i变量j变量k变量i_pointer内存单元 假设程序已定义了3个整型变量i、j、k,编译时系统分配2000和2001两个字节给变量i,分配2002和2003两个字节给变量j,分配2004和2005两个字节给变量k。那么,printf(%d,i)是这样执行的:根据变量名与地址的对应关系(这个对应关系是在编译时分配存储单元确定的),找到变量i的地址2000,然后从由2000开始的两个字节中取出数据(即变量的值3),把它输出。如果用scanf(%d,i)输入,执行时,就把从键盘输入的值送到地址为2000开始的整型存储单元中。如果有语句“k=i+j”,则从2000、2001字节取出i的值(3),再从2002、2003字节取出j的值(6),将它们相加后再将其和(9)送到k所占用的2004、2005字节单元中去。这种按变量地址存取变量值的方式称为“直接访问”方式。 9.1 指针和地址的概念 还可以采用另一种称为“间接访问”的方式。将变量i的地址存放在另一个变量中,按C语言的规定,可以在程序中定义整型变量、实型变量、字符变量等,也可以定义这样一种特殊的变量,它是存放地址的。如定义一个变量i_pointer,用来存放整型变量的地址,它被分配为3000、3001字节。可以通过下面语句将i的地址(2000)存放到i_pointer中: i_pointer=I; 9.1 指针和地址的概念 这时,i_pointer的值就是2000,即变量i所占用单元的起始地址。要存取变量i的值,也可以采用间接方式:先找到存放“i的地址”的变量,从中取出i的地址(2000),然后到2000、2001字节取出i的值(3)。 打个比方,为了开一个A抽屉,有两种办法:一种是将A钥匙带在身上,需要时直接找出该钥匙打开抽屉,取出所需的东西;另一种是为安全起见,将该A钥匙放到另一抽屉B中锁起来。如果需要打开A抽屉,就需要先找出B钥匙,打开B抽屉,取出A钥匙,再打开A抽屉,取出A抽屉中的东西,这就是“间接访问”。 9.2 变量的指针和指向变量的指针变量 指针变量的定义 指针变量的引用 指针变量作为函数参数 9.2.1 指针变量的定义 C语言规定所有变量在使用前必须定义,指定其类型,并按此分配内存单元。指针变量不同于整型变量和其他类型的变量,它是用来专门存放地址的,必须将它定义为指针类型。 9.2.1 指针变量的定义 例如: int i,j; int *pointer1, *pointer2; 第一行定义整型变量i和j,第二行定义指向整型变量的指针 变量pointer1和pointer2。第二行中左端的int是在定义指针变 量时指定的“基类型”。指针变量的基类型用来指定该指针 变量可以指向的变量的类型。例如,上面定义的指针变量 pointer1和pointer2可以用来指向整型变量i和j,但不能指向 实型变量a和b。 定义指针变量的一般形式为: 基类型 *指针变量名 9.2.1 指针变量的定义 例如: float *pointer3; /*pointer3是指向实型变量的指针变量*/ char *pointer4; /*pointer4是指向字符型变量的指针变量*/ 在定义了指针变量后,就可以建立指针变量和变量的“指向” 关系了。例如,有以下变量定义: float a; char c; 则下面的赋值语句就可以建立指针变量和变量的“指向”关 系了: pointer3=a; pointer4=c; 9.2.1 指针变量的定义 其含义是:将变量a的地址存放到指针变量pointer3 中,将变量c的地址存放到指针变量pointe

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档