C语言程序设计 教学课件 作者 邵军 全书第8章.ppt

C语言程序设计 教学课件 作者 邵军 全书第8章.ppt

ID:50351500

大小:1.04 MB

页数:140页

时间:2020-03-08

C语言程序设计 教学课件 作者 邵军 全书第8章.ppt_第1页
C语言程序设计 教学课件 作者 邵军 全书第8章.ppt_第2页
C语言程序设计 教学课件 作者 邵军 全书第8章.ppt_第3页
C语言程序设计 教学课件 作者 邵军 全书第8章.ppt_第4页
C语言程序设计 教学课件 作者 邵军 全书第8章.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 邵军 全书第8章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章 指 针8.1地址、指针与指针变量的基本概念8.2指针变量的定义、赋值和引用8.3数组指针和指向数组的指针变量8.4指针与函数8.5指针的指针8.6动态内存分配与指向它的指针变量本章小结8.1地址、指针与指针变量的基本概念8.1.1地址与指针指针类型数据是一种与内存相关的数据。要了解指针类型数据,首先要了解计算机的内存及内存地址这两个概念。程序处理的数据保存在内存中。内存是由许多顺序排列的存储单元组成的,一般把存储器中的一个存储单位称为一个字节或内存单元。而每一个内存单元都有一个编号,被称为“内存地

2、址”。对内存数据的访问都通过地址进行,程序的变量所占用的内存单元的地址就叫变量的指针。使用高级语言变量掩盖了内存单元、地址等低级概念,使我们编写程序时不必关心实现细节,但实际上它在程序执行的过程中发挥了巨大的作用。例如,在下面程序段中:inti;i=3;printf("%d",i);当程序开始执行后,系统首先为变量i分配了地址为2000和2001的存储单元,如图8-1所示。然后,当执行语句“i=3;”时,系统就将二进制数的3存放到变量i所对应的内存单元中。最后,在执行输出语句时,系统同样到该地址处将变量i

3、的值取出并输出。可见,程序对变量的所有访问都与变量的地址有关。图8-1变量地址8.1.2指针变量在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或某内存单元的指针。例如,将上例中变量i的地址放入另外的变量P中,当需要访问变量i时,可以采用两种不同的方式访问。第一种就是之前我们一直使用的通过变量名访问,即“直接访问”方式;第二种可以通过访问变量p,找到i的地址2000,再到2000地址对应的内存区域访问变量i的值。这种访问方式被称为“间接访问”方式。8

4、.2指针变量的定义、赋值和引用8.2.1指针变量的定义指针变量可以存储另一个变量的地址,并可以通过其间接访问该变量,这就需要在程序中定义指针变量,将其他变量的地址存储在指针变量中,最终达到间接访问变量的目的。   指针变量定义的一般形式为     类型说明符*变量名;其中:类型说明符:规定指针变量指向的基类型,即指定指针变量存储哪种类型数据的地址;*:说明当前定义的变量为指针变量;变量名:指针变量的名称,遵循C语言对标识符定义的规则。   例如:int*p1;/*p1是指向整型变量的指针变量*/fl

5、oat*p2;/*p2是指向浮点变量的指针变量*/char*p3;/*p3是指向字符变量的指针变量*/8.2.2指针变量的赋值指针变量是一种特殊的变量,对它的赋值只能赋予其他变量地址。这个赋值的一般形式为   指针变量=&变量名;   其中:“&”叫做取地址运算符,它的作用是返回变量的内存起始地址。通过“=”把取出的变量地址赋值给指针变量。通过这种运算取得联系的指针变量与变量间存在一种“指向”关系。例如:inti=100;int*ip;ip=&i;   在这里,假设变量i在内存中分配的存储单元的起始地址是

6、2000,那么当变量ip被赋值为i的地址之后,就可以说ip指向i。ip和i的指向关系可以用图8-2所示的示意图来表示。   指针变量与普通变量一样可以进行初始化,例如上例可以改写如下:inta;int*p=&a;图8-2指针与变量的“指向”关系在为指针变量进行赋值的过程中,需要注意以下问题:(1)不允许把一个数值赋予指针变量,故下面的赋值是错误的:int*p;p=1000;(2)赋给指针变量的变量地址不能是任意类型数据的地址,而只能是与指针变量的基类型具有相同类型的变量的地址。例如,整型变量的地址可以赋给

7、指向整型变量的指针变量,但浮点型变量的地址不能赋给指向整型变量的指针变量。例如,下面的赋值是错误的:int*p;floatx;p=&x;(3)被赋值的指针变量前不能再加“ * ”说明符,如写为 *p=&a也是错误的。8.2.3引用指针变量所指的值当一个指针变量指向另一个变量之后,就可以通过访问这个指针变量来间接访问它所指向的变量,其访问的一般形式为   *指针变量名;   例如:inti=200;int*ip;printf(“%d”,i);ip=&i;printf("%d",*ip);此程序的输出

8、结果如下:200200这段程序中第一个输出语句是对变量i的直接访问,而第二个语句是对变量i的间接访问,因为ip中存放的是变量i的地址,所以ip是指向i的指针变量,在ip前加“ * ”是访问变量ip中存储的地址所对应的存储单元中的数据。从中可以看到上面程序段中的两个输出语句虽然访问变量的方式不同,但结果相同。【例8.1】用“间接访问”方式输入和输出变量。   程序如下:main(){inta,b;int*pointer_1,*p

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

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

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