C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt

C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt

ID:50043841

大小:217.00 KB

页数:51页

时间:2020-03-08

C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt_第1页
C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt_第2页
C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt_第3页
C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt_第4页
C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt_第5页
资源描述:

《C语言程序设计 第2版 教学课件 作者 李敏第6章 指针.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章指针C语言程序设计16.1指针的概念6.2指针变量的定义和引用6.3指针与数组6.4指针与字符串6.5指针与函数6.6指针数组本章主要内容2021/8/326.1指针的概念计算机的内存储器是由连续的存储单元组成的,每一个存储单元都对应着一个唯一的编号,这个编号就是地址。当在程序中定义一个变量时,C编译程序就会为其在内存中分配带有编号的存储单元,以便存放这个变量的取值。变量的类型不同,分配给它的内存空间大小也不同,比如,分给字符变量一个字节,分给整型变量两个字节,分给实型变量四个字节等。2021/8/336.1指针的概念【例6-1】输出指

2、定变量的地址。#includevoidmain(){inta=10;floatb=123.45;charc='A';printf("addressofa=%u",&a);printf("addressofb=%u",&b);printf("addressofc=%u",&c);}程序运行结果:addressofa=4058addressofb=4060addressofc=40652021/8/346.1指针的概念变量a、b、c在内存中分配的存储单元情况如图6-1所示。一个地址起到指向某个存储单元的作用,因此,形

3、象地称一个变量的内存地址是它的“指针”,即地址就是指针,指针就是地址。图6-12021/8/356.1指针的概念把一个变量的内存地址(即指针)存放在另一个变量里,那么这个专门用来存放变量地址的变量就是“指针变量”。在程序中一般是通过变量名或地址来对内存单元进行存取操作。根据存取变量值的不同方式,分为直接访问和间接访问。按变量地址存取变量值的方式称为“直接访问”方式。由指针变量的值得到另一变量的地址,再通过得到的这个地址,完成对存储单元的访问。这种访问为“间接访问”。返回2021/8/366.2指针变量的定义和引用6.2.1指针变量的定义6.2

4、.2指针变量的引用6.2.3指针变量应用举例返回2021/8/376.2.1指针变量的定义定义指针变量的一般形式为:“类型标识符”是指针变量所指向的变量的类型,“*”表示所定义的变量类型为指针型。例如:int*p;float*q;char*ch;类型标识符*指针变量名2021/8/386.2.1指针变量的定义定义指针变量后,就可以写入指向某种数据类型的变量的地址,或者说是为指针变量赋初值,下面通过例子说明。例如:inta=60,*p;floatb=17.9,*q;charch='A',*r;p=&a;q=&b;r=&ch;2021/8/396

5、.2.1指针变量的定义用图6-3描述如下:强调说明:1)定义指针变量时,必须指定指针变量所要指向的变量的类型。2)一个指针变量只能指向同一类型的变量,例如,有定义“float*p;”,则指针变量p只能指向实型变量,不允许指向实型之外的其它类型的变量。3)当定义指针变量时,指针变量的值是随机的,不能确定它具体的指向,必须为其赋值才有意义。2021/8/3106.2.2指针变量的引用在指针变量的使用中,有两个与其密切相关的运算符:1)&(取地址运算符)其一般形式:其作用是取变量所占用的内存单元的首地址。如:&a为变量a的地址,&b为变量b的地址。

6、如要把整型变量a的地址赋给指针变量p,可用以下两种方法完成:inta,*p=&a;或者:inta,*p;p=&a;&变量名2021/8/3116.2.2指针变量的引用不允许把一个数值赋给指针变量,下面的赋值是错误的:int*p;p=16;2)*(指针运算符,也称间接访问运算符)在指针变量的前面添加指针运算符,表示指针变量所指向的变量,运算结果获取指针变量所指向变量的值。其一般形式:例如:inta=17,*p;p=&a;*指针变量名2021/8/3126.2.2指针变量的引用指针变量p指向整型变量a,则*p等价于变量a,即*p的值也为17,可以

7、直观地认为变量a与*p是对应着同一个存储单元。可见,可以通过指针变量p间接访问变量a。说明:指针运算符“*”和声明指针类型名中的“*”不是一回事,在指针变量声明中,“*”是类型名,表示其后的变量是指针类型;而表达式中出现的“*”则是一个指针运算符,用来表示指针变量所指向的变量。2021/8/3136.2.2指针变量的引用下面对运算符“&”和“*”作进一步说明如下:若有:inta,*p;p=&a;则&*p、&a、p是等价的,反之,*&a、*p、a也是等价的,均表示变量a。“&”和“*”两个运算符的优先级别相同,但按自右而左方向结合。(*p)++

8、相当于a++,如果去掉括号变为*p++,因“++”与“*”优先级别相同,但按自右而左方向结合,*p++相当于*(p++),因++在p右侧,先对p的原值进行*运算,得

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

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

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