厦门理工学院11级C语言 第07章 指针ppt课件.ppt

厦门理工学院11级C语言 第07章 指针ppt课件.ppt

ID:59338646

大小:497.50 KB

页数:151页

时间:2020-09-20

厦门理工学院11级C语言 第07章 指针ppt课件.ppt_第1页
厦门理工学院11级C语言 第07章 指针ppt课件.ppt_第2页
厦门理工学院11级C语言 第07章 指针ppt课件.ppt_第3页
厦门理工学院11级C语言 第07章 指针ppt课件.ppt_第4页
厦门理工学院11级C语言 第07章 指针ppt课件.ppt_第5页
资源描述:

《厦门理工学院11级C语言 第07章 指针ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章指针指针在C语言中占有重要的地位,是最具有特色的语言成分,是C语言的精华。正确而灵活地使用它,可以有效地表示复杂的数据结构;能动态分配内存;直接处理内存地址;对内存中各种不同的数据结构进行快速处理,也为函数间各类数据的传递提供了简捷便利的方法。使用指针,可以编制出简洁明快、功能强和质量高的程序。但指针也是最有风险的。譬如,未初始化的指针可能造成系统的错误。也许夸张了,但指针确实很容易被误用,使得系统造成难以发现的错误。造成程序“挂死”的大部分原因都是由于错误地使用指针或数组越界所造成的。C程序设计中使用指针可以:使程序简洁、紧凑、高效有

2、效地表示复杂的数据结构动态分配内存得到多于一个的函数返回值7.1指针的基本概念1.内存地址在计算机硬件系统的内存储器中,拥有大量的存储单元(以字节为单位)。为了便于管理,每个存储单元都有惟一的编号,这个编号就是存储单元的“地址”。例如,对16位机,DOS环境下的应用程序,其代码段、数据段和堆栈段放在位于内存地址0x0000~0xffff之间的640KB常规内存中。也就是说,程序中的某一变量,对应0x0000~0xfff范围内的某些存储单元。注:TC只能开发DOS下的16位命令行方式的应用程序。2.变量的存储回顾一下变量的定义:“变量代表内存中

3、具有特定属性的一个存储单元,它用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的,一个变量应该有一个名字,以便被引用。”下面以一个简单的程序讨论一下变量在内存中的存储情况。关键字:变量名、存放变量的内存单元格、内存单元格的地址、变量值7.1.1预备知识下面以一个简单的程序讨论一下变量在内存中的存储情况。关键字:变量名、存放变量的内存单元格、内存单元格的地址、变量值main(){inta=1;floatb=2;intc[2]={5,6};chard=’d’;}一个程序片段变量a变量b变量d数组c500000000H00000001

4、H00000002H00000003H00000004H00000005H100000006H00000007H00000008H00000009H…...60000000AH00000009H‘d’2变量名a变量的地址存放变量的内存单元00000000H00000001H1变量的值图7-2变量a的局部示意图注:变量的地址是二进制的,为了便于书写而在这里写成对应的十六进制形式。等读者熟悉后在以后的章节中则会直接用十进制来书写,以便于阅读。程序中分别定义了4个变量:int变量a,float变量b,int数组c,char变量d,它们在内存中分别占

5、据2个、4个、4个、1个字节。其中变量a的首地址是00000000H(这是假设,实际情况中程序定义的变量并不是从内存的0字节开始存放的),则变量b的首地址是00000002H,数组c的首地址是00000006H,变量d的首地址是0000000AH。首地址就简称为变量的地址。要访问变量首先就要知道变量的地址,可是通过数字形式的地址值访问变量,显然是不方便的(正如使用URL网址比IP地址要方便):不便于书写和记忆,而且数字本身没有什么具体的字面意义。需要了解硬件细节。比如当前哪些内存空间是空闲的等等。这就失去了高级语言容易使用、接近人类语言的优点

6、。好在C语言提供了变量名,程序员通过变量名来访问变量,不需要知道变量的存储单元是如何开辟在内存的空闲区的,也不需要关心变量的实际存放地址。变量名和变量的地址之间由编译器和操作系统进行联系和转换(最终当然还是要通过地址对变量进行访问),这个转换过程对程序员来说是透明的。这样做显然是有好处的:变量名比地址好记而且可以表文达意,提高了程序的书写性和可读性;普通程序员可以把更多的精力放在程序的逻辑实现上而不需要过分关注计算机硬件系统的有关细节。这些也正是高级语言的优点之表现。注:常量是没有地址的。(以后通过对汇编语言的学习,我们可以了解到常量的存储)

7、7.1.2指针就是地址它们具有双重含义什么是指针呢?指针其实就是地址!既然变量名比变量地址使用起来方便,那么为什么还要引入指针呢?这是因为指针可以给我们的程序带来意想不到的灵活度,随着本章的深入学习,您一定会体会到这句话的!“指针就是地址”,因此对指针的认识要建立在对地址的深刻理解之上。地址有两个方面的含义。地址值(也就是内存单元的编址)。是什么类型的数据的地址。这就存在着一个跨度也就是存储空间大小的问题。(我们已经知道,不同的数据类型其占据内存空间的大小是不同的。比如对于一个int变量的地址,应该是内存中某2个连续字节单元的首地址;如果是一

8、个float变量的地址,那么该指针应该是内存中某4个连续字节单元的首地址)。7.1.3指针其名明白指针就是地址,这一点十分重要。多数情况下,这个地址是内存中另一个变

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

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

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