c语言程序设计教程(三)ppt

c语言程序设计教程(三)ppt

ID:36325914

大小:439.00 KB

页数:231页

时间:2019-05-09

c语言程序设计教程(三)ppt_第1页
c语言程序设计教程(三)ppt_第2页
c语言程序设计教程(三)ppt_第3页
c语言程序设计教程(三)ppt_第4页
c语言程序设计教程(三)ppt_第5页
资源描述:

《c语言程序设计教程(三)ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计教程(三)第8章指针第9章复合数据类型第8章指针C语言的重要特性之一就是指针操作。利用指针可以直接而快速的处理内存中各种数据结构的数据,特别是数组、字符串、内存的动态分配等,并能象汇编语言一样处理内存地址。它为函数间各类数据的传递提供了简捷便利的方法。指针使C程序简洁、紧凑、高效,但指针使用上的灵活性容易导致指针滥用而可能使程序失控。本章主要介绍如下内容:指针的概念和运算、指针和数组、指针函数和函数指针、多级指针以及指针的实例举例。8.1指针基本概念及其指针变量的声明在C语言中,对于变量的访问形式之一,就是先求出变量的地址,然后再通过地址对它进行访问,这

2、就是本节所要论述的指针及其指针变量。8.1.1指针、变量的指针和指针变量例8-1指针及其指针变量应用举例。#includevoidmain(){inti=20,x;int*ip;ip=&i;x=*ip;printf("i'saddressis:%d",&i);printf("ip'saddressis:%d",ip);printf("i'sdatais:%d",i);printf("ip'sdatais:%d",*ip);printf("x=%d",x);}8.1.1指针、变量的指针和指针变量(续)运行结果:i'saddressi

3、s:1310588ip'saddressis:1310588i'sdatais:20ip'sdatais:20x=20现在我们对例8-1进行代码分析,逐步深入了解什么是指针及其指针变量的应用意义。inti=20,x;int*ip;声明了两个整型变量i,x,并对整型变量i进行初始化,赋初值为20,同时还声明了一个指向整型数的指针变量ip。i,x中可存放整数,而ip中只能存放整型变量的地址。我们把i的地址赋给ip,即:ip=&i;8.1.1指针、变量的指针和指针变量(续)此时指针变量ip指向整型变量i,由运行结果可知变量i的地址为1310588(该地址是在64位计算机上运

4、行得出的结果,不同的计算机得出的地址不同),这个赋值可形象理解为图8-1所示的联系。1310588变量i指针ip131058820图8-1给指针变量赋值8.1.1指针、变量的指针和指针变量(续)以后我们便可以通过指针变量ip间接访问变量i,例如:x=*ip;运算符*访问以ip为地址的存贮区域,而ip中存放的是变量i的地址。因此,*ip访问的是地址1310588的存贮区域(因为是整数,实际上是从1310588开始的两个字节),它就是i所占用的存贮区域,所以上面的赋值表达式等价于:x=i;所谓变量的指针,实际上指变量的地址。变量的地址虽然在形式上好像类似于整数,但在概念上

5、不同于以前介绍过的整数,它属于一种新的数据类型,即指针类型。8.1.1指针、变量的指针和指针变量(续)在C语言中,一般用“指针”来指明这样一个表达式:&x的类型,而用“地址”作为&x的值。也就是说,若x为一整型变量,则表达式&x的类型是指向整数的指针,而&x的值是变量x的地址。同样,若double d;则&d的类型是指向双精度数d的指针,而&d的值是双精度变量d的地址。严格地说,一个指针就是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们约定:“指针”是指地址,是常量;“指针变量”是指取值为地址的变量。

6、声明指针的目的是为了通过指针去访问内存单元。8.1.2指针的声明在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。下面介绍两个与地址有关的运算符:&:取地址运算符。*:指针运算符(或称“间接访问”运算符)。①C语言中提供了地址运算符&来表示变量的地址。其一般形式为:&变量名或数组元素名;如:&a表示变量a的地址,&b[2]表示数组元素b[2]的地址。变量本身必须预先说明。设有指向整型变量的指针变量p,如要把整型变量a的地址赋予p可以有以下两种方式:8.1.2指针的声明(续)1.指针变量初始化的方法inta;int*p=&a;2.赋值语

7、句的方法inta;int*p;p=&a;②C语言中另一种与地址有关的运算符是*,其一般形式为:*指针变量名或目标变量地址;*运算符要求运算量是地址,含义为访问指定地址的目标变量。8.1.2指针的声明(续)例如:&(*px)含义为取指针px的目标变量的地址,就是px。*(&x)含义为访问变量x的地址指向的目标变量,就是x。可见,&运算和*运算互为逆运算。指针变量同普通变量一样,使用之前不仅要声明说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误。指针变

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。