C_C++程序设计与上机指导007.pptVIP

  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文档。上传文档
查看更多
C_C程序设计与上机指导007

第7章 指 针 7.1 指针的概念 7.1.1 地址与指针 7.1.2 指针的定义 7.1.3 指针变量的引用 7.1.4 指针运算 7.1.5 多级指针 7.1.1 地址与指针 一个变量实质上代表了“内存中某个存储单元”。例如:int a=3;这条语句所表示的含义是把3放在以a为标识的存储单元中。那么C程序是怎样存取这个存储单元的内容呢? 计算机的内存是以字节为单位的一片连续的存储空间,每个字节都有一个编号,这个编号称为内存地址。若没有内存字节的编号,系统就无法对其进行管理,就像每个教室都有一个编号一样。内存中的地址号是连续的,并且用二进制数来表示。为了更加直观,我们使用十进制来加以描述。内存中可存放程序语句、函数、常量、变量等。不同的语句、函数、常量、变量在内存中都各自占有一个可标识的存储区域,每个区域又由若干个字节组成。一个存储区域的地址是指该存储区域中第一个字节的地址。 变量的地址虽然在形式上类似于整数,但在概念上不同于以前介绍过的整数,它属于一种新的数据类型,即指针类型。它是C语言中广泛使用的一种数据类型。在某些场合,指针是使运算得以进行的唯一途径,也是C语言编程最主要的风格之一。指针和数组、字符串、函数间数据的传递等有着密不可分的联系。 7.1.2 指针的定义 1. 指针变量的定义 变量的指针,实际上指变量的地址。指针变量不同于整型变量和其它类型的变量,它是用来专门存放地址的。 定义的一般形式: 类型说明符 *变量名; 其中: “*”:表示其后的变量是一个指针变量。 类型说明符:表示该指针变量所指向的变量的数据类型,也称“基类型”。 在C语言中,一个指针变量只能指向一种类型的变量。 2. 指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值,而且只能赋予地址值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。 变量的地址是由编译系统分配的,在C语言中可以通过地址运算符来表示变量的 地址。 其一般形式为: 变量名 例如:a  表示取变量a的地址。 使一个指针变量指向一个变量通常通过赋值语句来实现。设有指向整型变量的指针变量p,如要把整型变量a 的地址赋予p可以有以下两种方式: (1) 指针变量初始化的方法 (2) 赋值语句的方法 7.1.3 指针变量的引用\ 在指针变量的引用中,有两个重要的运算符: (1) 取地址运算符 在调用scanf函数时及前面介绍指针变量的赋值中,我们已经了解并使用了运算符。取地址运算符是单目运算符,其结合性为自右至左,其功能是取变量的地址。 (2) 取内容运算符* 取内容运算符*也称间接访问运算符,是单目运算符,其结合性为自右至左,用来表示指针变量所指的变量。需要注意的是在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型;而表达式中出现的“*”则是一个用以表示指针变量所指变量的运算符,即取指针变量所指变量的内容。 7.1.4 指针运算 1. 指针的赋值运算 (1) 指针变量初始化赋值。 (2) 把一个变量的地址赋予指向相同数据类型的指针变量。这两种以前章节中已作过介绍。 (3) 通过指针变量获得地址值。是把一个指针变量的值赋予另一个指向相同类型变量的指针变量,从而使这两个指针变量指向同一地址。 (4) 把数组的首地址赋予指向数组的指针变量。 (5) 给指针变量赋“空”值。除了给指针变量赋地址值外,还可以给指针变量赋NULL值 2. 指针的算术运算 对指针变量可以加上或减去一个整数,其实质就是移动指针,使指针变量指向相邻的存储单元。因此,只有当指针指向一串连续的存储单元时,指针的移动才有意义,所以,指针的移动常用于对数组元素的操作。对于指向数组的指针变量,可以加上或减去一个整数n。假设p是指向数组a的指针变量,则p+n,p-n,p++,++p,p--,--p 运算都是合法的。 指针变量加上或减去一个整数n的意义是:把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。 3. 指针的关系运算 通常两个或多个指针指向同一串连续的存储单元时,比较才有意义。关系运算可表示它们所指数组元素存储位置的前后关系。 7.1.5 多级指针 1. 二级指针 二级指针是指向指针的指针变量。 定义方法: 类型标识符 **指针变量名; 例如: int **p; /*定义p为指针变量,它指向另一个指针变量(该指针变量应指向一个整型变量)*/ “*”指针运算符具有自右向左的结合性,故以上定义语句相当于int *(*p)。 2. 多级指针 指针除定义二级指针外,还可以定义有“多级指针”。 【例7.6】多级指针举例。 #include stdio.h void main() { int ****p1,*

文档评论(0)

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

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

1亿VIP精品文档

相关文档