C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt

C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt

ID:50043081

大小:411.50 KB

页数:118页

时间:2020-03-08

C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt_第1页
C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt_第2页
C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt_第3页
C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt_第4页
C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt_第5页
资源描述:

《C及C++程序设计 第3版 教学课件 张富 第8章-指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章指针在这一章,首先讲述指针的概念和与其相关的操作。然后介绍指针在程序设计中的应用。在指针的应用中,数组和指针的关系极为密切,本章将重点讨论这方面的问题。本章最后介绍多重指针的概念及其在程序设计中的应用。指针的概念8.1指针运算符和指针变量的初始化8.2数组的指针8.3用指针处理字符串8.4指针数组8.5多级指针8.6小结8.78.1指针的概念8.1.1指针和指针变量在程序中经常要定义各种数据类型的变量。定义一个变量就意味着在内存中给它分配一定的存储单元,以备存储这个变量的数值。变量的类型不同,分配给它的内存空间大小也不同。例如,字符型变量分配1个字节,整型变量分

2、配2个字节等。在内存中,每个字节有一个地址。因此,每个变量都有自己的(内存)地址,而变量的数值就存储在分配给它的地址单元中。当变量的内存单元为一个以上的字节时,所谓变量地址,实际上是指其中第一个字节的地址,称为变量的首地址。这样,对于一个变量,有变量的地址和在该地址存储的内容两个概念。例如程序中定义了如下的变量:chara;intb;floatc;则系统给用户定义的上述三个变量按所需的字节数分配如图8-1所示内存单元。同时记录下变量名与其地址的关系,如图8-2所示。图8-1变量的内存单元图8-2变量与地址对照表对于数组也是一样,例如定义一个整型数组arr[3],系统编

3、译时分配给它一个6个字节的连续内存单元,假设首地址为1000,如图8-3所示。其相应的数组名与地址对照表如图8-4所示。图8-3数组内存单元与地址图8-4数组arr与其内存地址对照表已知数组的首地址,不难计算出各下标变量arr[0],arr[1]和arr[2]的地址。从而可以像普通变量一样,通过变量名来对变量进行各种运算和操作。如上所述,通过变量名找到存放数据的地址,进而实现数据的存取和运算。称这种访问数据的方式为直接存取方式。如果将某一变量的地址存放到另一个变量中,那么,变量内容为地址的这个变量,就叫做指针变量。指针变量中存储的数据(内容)为地址。简单地说,指针就是

4、地址。存放地址的变量就是指针变量。可见,指针变量是一种特殊的变量,它在内存中保存的不是一般的数值,而是另一个变量的地址。如果一个变量的内容是另一个变量的地址,我们就说第一个变量指向(point)第二个变量。这第一个变量当然就是指针变量。图8-5是指针变量概念的示意图。图8-5指针概念示意图程序中有了指针变量后,就可以通过指针变量来处理(如存、取等)指针变量所指变量的数据了。这种通过指针来实现数据的访问的方法,称为间接存取方式。对于数组来说,它占用一个连续的内存空间。其中第一个存储单元的地址,称为数组的首地址。数组的每个元素,占用一定数量的单元。对于一定数据类型的数组,

5、每个数组元素的地址也是确定的,并且不难从其首地址计算出来。因此,对于数组除了采用以前学过的直接存取方式外,同样也可以采用通过指针存取的间接存取方式来操作数组元素的数据。图8-6所示是指向数组的指针示意图。图8-6指向数组的指针变量示意图8.1.2指针变量的定义指针变量定义语句的一般格式为:数据类型*指针变量名;这个语句包含两个内容,一是指针变量名。指针变量名是用合法的C标识符为指针变量起的名字,符号“*”是定义指针变量的标志,不是变量名的一部分。二是指针变量所指向的数据的类型。在一个定义语句中,可以同时定义普通变量、数组和指针变量。【例8-1】下面是两个指针变量定义语

6、句:char*p;int*a,*b;第一个语句定义变量p是指向字符型数据的指针变量;第二个语句定义变量a和b是指向整型数的指针变量。系统在编译时,将为指针变量p,a,b在内存中设置相应的存储单元。由于这三个指针变量还没有被赋值,所以他们没有指向具体哪个变量。图8-7所示是这三个指针的示意图。图8-7定义指针变量示意图8.2指针运算符和指针变量的 初始化8.2.1指针运算符C语言中,对指针变量的操作,主要有两个基本运算(操作)符:“&”和“*”。1.取地址运算符“&”取地址运算表达式的一般形式为:&变量运算符“&”是只有一个操作对象的单目运算符。它的运算功能是获取操作对

7、象(变量)在计算机内存中的存储地址。【例8-2】图8-8所示是这个例题的示意图。图8-8例2.取内容运算符“*”取内容运算表达式的一般形式为:*指针变量运算符“*”也是一个单目操作符,它运算的功能是获取操作数(指针变量)所指的地址的内容,也就是指针变量所指变量的值。【例8-3】继续我们前面的例子。有如下程序段:intabc=67,val;int*abc_addr;abc_addr=&abc;val=*abc_addr;在这个例子中增加了第四个语句,其中表达式:*abc_addr的操作是取指针变量abc_addr所指的地址的内容。因为abc_addr内

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

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

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