C语言程序设计 作者 崔永君 彭静 全书 第8章.pptVIP

C语言程序设计 作者 崔永君 彭静 全书 第8章.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文档。上传文档
查看更多
第 8 章 指 针 8.1 指针变量的定义与引用 8.1.1 指针与指针变量   一般把存储器中的一个字节称为一个内存单元,由于变量的数据类型不同,它所占的内存单元数也不相同,如整型量占2个单元,字符量占1个单元等。   例如,在程序中作如下定义:     int a=1,b=2;     float x=3.14, y = 5.3;     double m=3.124;     char ch1=a, ch2=b;   先看一下编译系统是怎样为变量分配内存的。变量a、b是整型变量,在内存中各占2个字节;x、y是实型,各占4个字节;m是双精度实型,占8个字节;ch1、ch2是字符型,各占1个字节。由于计算机内存是按字节编址的,假设变量的存放从内存2000单元开始,则编译系统对变量在内存中的放置情况如图8-1所示。 图8-1 不同数据类型的变量在内存中占用的空间   由图8-1可以看出,变量在内存中按照数据类型的不同所占内存的大小也不同,每个变量都有具体的内存单元地址。为了正确访问这些内存单元,必须为每个内存单元编号。根据某个内存单元的编号即可准确地找到该内存单元,内存单元的编号也叫做地址。例如,变量a在内存的地址是2000,占2个字节,变量b的内存地址就为2002,变量m的内存地址为2012等。   内存单元的指针和内存单元的内容是两个不同的概念。可以用一个通俗的例子来说明它们之间的关系。我们到银行存/取款时,银行工作人员将根据我们的账号寻找我们的存款单,找到之后在存款单上写入存/取款的金额。这里,账号就是存款单的指针,存/取款数是存款单的内容。对于一个内存单元来说,单元的地址即指针,其中存放的数据才是该单元的内容。   在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。通过指针对所指向变量的访问,也就是一种对变量的“间接访问”。   例如:设一组指针变量pa、pb、px、py、pm、pch1、pch2分别指向上例的变量a、b、x、y、m、ch1、ch2,指针变量也同样被存放在内存中,二者的关系如图8-2所示。 图8-2 指针变量与变量在内存中的关系   图8-2中,左部所示的内存中存放了指针变量的值,该值给出的是所指变量的地址,通过该地址可以对右部描述的变量进行访问。如指针变量pa的值为2000,是变量a在内存的地址。我们称指针变量pa指向变量a,或者说pa是指向变量a的指针。变量的地址就是指针,存放指针的变量就是指针变量。 8.1.2 指针变量的定义   在C程序中,存放地址的指针变量需专门定义,指针变量的一般定义形式如下:    类型说明符 *变量名; 其中,*?表示这是一个指针变量,“变量名”即定义的指针变量名,“类型说明符”表示本指针变量所指向的变量的数据类型。 例如:“int *p1;”表示p1是一个指针变量,它的值是某个整型变量的地址。或者说p1指向一个整型变量。至于p1究竟指向哪一个整型变量,应由向p1赋予的地址来决定。   再如:   static int *p2; /*p2是指向静态整型变量的指针变量*/   float *p3; /*p3是指向浮点变量的指针变量*/   char *p4; /*p4是指向字符变量的指针变量*/   应该注意的是,一个指针变量只能指向同类型的变量,如p3只能指向浮点变量,不能时而指向一个浮点变量,时而又指向一个字符变量。 8.1.3 指针变量的赋值   未经赋值的指针变量不能使用,否则将造成系统混乱,甚至导致死机。指针变量的赋值只能赋予地址,而不能赋予任何其他数据,否则将引起错误。在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址,因此,C语言中提供了地址运算符来表示变量的地址。  其一般形式如下:     变量名;   例如a表示变量a的地址,b表示变量b的地址。变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a的地址赋予p可以有以下两种方式。   (1) 指针变量初始化的方法:    int a;    int *p = a;   (2) 赋值语句的方法:    int a;    int *p;    p=a; 8.1.4 指针变量的引用   【例8.1】 用指针变量进行输入、输出。   源程序如下:   main( )   {    int *p, m;    printf(Please input a integer: \n);    scanf(%d, m);    p = m;/*指针p指向变量m*/    printf(%d,*p  }  

文档评论(0)

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

1亿VIP精品文档

相关文档