- 1、本文档共71页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 指针和引用 6.1 指针基本概念 6.2 指向数组元素的指针 6.3 指针形参 6.4 数组形参 6.1 指针基础概念 指针是C语言的一个重要概念。指针在程序中有以下多方面的作用: (1) 利用指针能间接引用指针所指的对象。 (2) 指针能用来描述数据之间的关系,以便构造复杂数据结构和处理动态数据结构问题。 (3) 利用指针形参,能使函数间接引用调用环境中的变量。 (4) 指针与数组结合,使访问数组元素的方式更加多样、手段更加灵活。 (5) 熟练正确应用指针,能写出紧凑高效的程序。 1. 变量、变量的地址及变量的值 程序在计算机上运行时,程序中的变量会在内存中占据由若干字节组成的一个内存储块,用于存放变量的值。存储块的开始地址称为变量的地址。 程序用变量的名引用变量的值或变量的地址。 例如: int x = 1; x = x + 2; 在代码“x = x+2;”中,赋值号左边的 x 表示将存入变量 x,赋值号右边的 x 表示引用变量 x 的值。该代码的意义是“完成取x的值,加上 2 的计算,并将计算结果存入变量 x 中。” 2. 指针变量和它所指向的变量 取变量地址运算符: 例: x 表示取变量x的地址 说明: 变量的地址也可作为一种值被存储和运算。 除能按名引用变量外,也可利用变量的地址引用变量。按变量名引用变量习惯称为直接引用,而将变量A的地址存于另一变量B中,借助于变量B引用变量A称为对A的间接引用。 指针变量的定义 指针变量:专门用于存放某个变量地址。 一般形式为: 类型 *标识符; 其中, 标识符:指针变量的名,标识符之前的*符号表示该变量是指针变量。 类型: 表示该指针变量能指向的数据类型。 例如, int *ip; float *fp; 说明: 定义指针变量ip和fp,ip能取int类型变量的地址,fp能取float类型变量的地址。 指针变量的定义 例如: int *ip, i = 2; ip = i; 表示:将整型变量i的地址(而非内容)赋给指针变量ip。 使指针变量ip与变量i之间建立如下图所示的关系 (假设分配给变量 i 的内存地址为1000)。 当指针变量 ip 的值为变量 i 的地址时,就说指针变量 ip 指向变量 i 。 指针变量定义时指定初值 例如: int j; int *intpt = j; 表示:在定义 int * 类型指针变量 intpt 时,给它初始化为 int 类型变量 j 的地址,使它指向 j。 指针变量定义-说明 (1) 当定义局部指针变量时,如果未给它指定初值,则它的值是不确定的。 (2) C语言规定 0 地址记为 NULL,即表示空地址。 例如: ip = NULL; 表示:指针变量 ip 为空指针,不指向任何变量。 (3) 指针变量只能取程序对象的地址值,不能将任何其他非地址值赋给指针变量。 (4) 一个指针变量只能指向同一个类型的变量,不能一会儿指向整型变量,一会儿指向实型变量。 指针变量定义-说明 例如:int i = 100, j, *ip, *intpt; float f, *fp; 以下都是不正确的赋值: ip = 100; /* 指针变量不能赋整数值 */ intpt = j; /* 指针变量不能赋整型变量的值 */ fp = i; /* 只能指向float型变量,不能指向int型变量 */ fp = ip; /* 不同类型的指针变量,不能相互赋值 */ 以下都是正确的赋值: ip = i; /* 使 ip 指向 i */ intpt = ip; /* 使 intpt 指向 ip 所指变量 */ fp = f; /* 使 fp 指向 f */ ip = NULL; /* 使 ip 不再指向任何变量 */ 3. 引用指针变量所指的变量 引用指针变量所指向的对象:* 指针变量 例如:int i=3, j, *ip, *intpt; ip = i; /* 让ip指向变量i */ intpt = j; /* 让intpt指向变量j */ *intpt = *ip + 5; 等价:j = i + 5; 说明:请注意指针变量之间的赋值,指针变量所指向的变量之间的赋值,这两种赋值在表示方法上的区别。 例如:intpt = ip; 使两个指针变量in
文档评论(0)