- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京科技大学 计算机系 第6章 指针 6.1 指针的概念 计算机的内存储器是由连续的存储单元组成的,每一个存储单元都对应着一个唯一的编号,这个编号就是地址。 当在程序中定义一个变量时,C编译程序就会为其在内存中分配带有编号的存储单元,以便存放这个变量的取值。变量的类型不同,分配给它的内存空间大小也不同,比如,分给字符变量一个字节,分给整型变量两个字节,分给实型变量四个字节等。 6.1 指针的概念 【例6-1】输出指定变量的地址。 #include stdio.h void main() { int a=10; float b=123.45; char c=A; printf(address of a=%u\n,a); printf(address of b=%u\n,b); printf(address of c=%u\n,c); } 6.1 指针的概念 变量a、b、c在内存中分配的存储单元情况如图6-1所示。 一个地址起到指向某个存储单元的作用,因此,形象地称一个变量的内存地址是它的“指针”,即地址就是指针,指针就是地址。 6.1 指针的概念 把一个变量的内存地址(即指针)存放在另一个变量里,那么这个专门用来存放变量地址的变量就是“指针变量”。 在程序中一般是通过变量名或地址来对内存单元进行存取操作。根据存取变量值的不同方式,分为直接访问和间接访问。 按变量地址存取变量值的方式称为“直接访问”方式。 由指针变量的值得到另一变量的地址,再通过得到的这个地址,完成对存储单元的访问。 这种访问为“间接访问”。 6.2 指针变量的定义和引用 6.2.1 指针变量的定义 6.2.2 指针变量的引用 6.2.3 指针变量应用举例 6.2.1 指针变量的定义 定义指针变量的一般形式为: “类型标识符”是指针变量所指向的变量的类型,“*”表示所定义的变量类型为指针型。例如: int *p; float *q; char *ch; 6.2.1 指针变量的定义 定义指针变量后,就可以写入指向某种数据类型的变量的地址,或者说是为指针变量赋初值,下面通过例子说明。例如: int a=60,*p; float b=17.9,*q; char ch=A,*r; p=a;q=b;r=ch; 6.2.1 指针变量的定义 用图6-3描述如下: 强调说明: 1)定义指针变量时,必须指定指针变量所要指向的变量的类型。 2)一个指针变量只能指向同一类型的变量,例如,有定义“float *p;”,则指针变量p只能指向实型变量,不允许指向实型之外的其它类型的变量。 3)当定义指针变量时,指针变量的值是随机的,不能确定它具体的指向,必须为其赋值才有意义。 6.2.2 指针变量的引用 在指针变量的使用中,有两个与其密切相关的运算符: 1)(取地址运算符) 其一般形式: 其作用是取变量所占用的内存单元的首地址。如:a为变量a的地址,b为变量b的地址。如要把整型变量a 的地址赋给指针变量p,可用以下两种方法完成: int a,*p=a; 或者:int a,*p; p=a; 6.2.2 指针变量的引用 不允许把一个数值赋给指针变量,下面的赋值是错误的: int *p; p=16; 2)*(指针运算符,也称间接访问运算符) 在指针变量的前面添加指针运算符,表示指针变量所指向的变量,运算结果获取指针变量所指向变量的值。其一般形式: 例如: int a=17,*p; p=a; 6.2.2 指针变量的引用 指针变量p指向整型变量a,则*p等价于变量a,即*p的值也为17,可以直观地认为变量a与*p是对应着同一个存储单元。可见,可以通过指针变量p间接访问变量a。 6.2.2 指针变量的引用 下面对运算符“”和“*”作进一步说明如下: 若有:int a,*p;p=a;则*p、a、p是等价的,反之,*a、*p、a也是等价的,均表示变量a。“”和“*”两个运算符的优先级别相同,但按自右而左方向结合。 (*p)++相当于a++,如果去掉括号变为*p++,因“++”与“*”优先级别相同,但按自右而左方向结合, *p++相当于*(p++),因++在p右侧,先对p的原值进行*运算,得到a
您可能关注的文档
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第十章 第十章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第四章 第四章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第五章 第五章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘加海 朱云其第一章 第一章.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch1.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch2.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch3.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch4.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch5.ppt
- C语言程序设计(第二版) 教学课件 作者 刘克成 张凌晓 ch6.ppt
- C语言程序设计(第二版)电子教案 第7章 结构体与共用体.PPT
- C语言程序设计(第二版)电子教案 第8章 编译预处理.ppt
- C语言程序设计(第二版)电子教案 第9章 位运算.ppt
- C语言程序设计(第二版)电子教案 第10章 文件.ppt
- C语言程序设计(第二版)电子教案 第11章 综合实例.ppt
- C语言程序设计(第二版)电子教案丁亚涛 第1章 C语言概述.ppt
- C语言程序设计(第二版)电子教案丁亚涛 第2章 数据类型、运算符和表达式.ppt
- C语言程序设计(第二版)电子教案丁亚涛 第3章 简单程序设计.ppt
- C语言程序设计(第二版)电子教案丁亚涛 第4章 选择结构程序设计.ppt
- C语言程序设计(第二版)电子教案丁亚涛 第5章 循环结构程序设计.ppt
文档评论(0)