C程序设计 教学课件 作者 赵山林 10.ppt

C程序设计 教学课件 作者 赵山林 10.ppt

ID:50043070

大小:351.00 KB

页数:68页

时间:2020-03-08

C程序设计 教学课件 作者 赵山林 10.ppt_第1页
C程序设计 教学课件 作者 赵山林 10.ppt_第2页
C程序设计 教学课件 作者 赵山林 10.ppt_第3页
C程序设计 教学课件 作者 赵山林 10.ppt_第4页
C程序设计 教学课件 作者 赵山林 10.ppt_第5页
资源描述:

《C程序设计 教学课件 作者 赵山林 10.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第10章指针指针是C语言中一个十分重要的概念。指针的引入极大地丰富了C语言的功能,利用指针可以直接对内存中各种不同类型的数据进行快速访问,可以有效地表示、访问复杂的数据结构,可以方便灵活地在函数间传递数据,可以提高某些程序的执行效率,实现对底层硬件的访问。10.1指针的基本概念10.2指针变量10.3数组的指针10.4函数的指针和返回指针值的函数10.5指针数组与指向指针的指针10.1指针的基本概念10.1.1变量的直接访问和间接访问变量是程序中数据所占存储单元的符号。程序在编译时,系统会根据变量定义的数据类型为其分配相应的内存单元,用于存放变量的具体数据。不同

2、类型的变量所分配的内存单元的长度是不一样的。通常,将变量所分配内存单元的首地址(即变量所分配的低字节地址)称为变量的地址。另外,系统还产生一张“变量名、地址对应关系表”,用来记录变量名与地址之间的关系,每一个变量名对应一个地址。在程序中使用变量,就是通过“变量名、地址对应关系表”所记录的变量地址来访问相应的内存单元,变量的值就是内存单元的内容。通过变量地址可以找到该变量所占的存储单元,因此可以说变量地址“指向”变量的存储单元。这种直接按照变量地址访问变量的方式称为“直接访问”,如图10.2所示。图10.2变量访问方式示意图这种把变量地址存放在一个特殊变量中,然后

3、通过访问特殊变量的值(地址),再由此地址找到最终要访问的变量的方法,称为“间接访问”。10.1.2指针与指针变量变量的地址称为变量的指针,例如,&a的值称为变量a的指针。专门用来存放其他变量地址的特殊变量称为指针变量。为了访问p所指向的变量a,通过指向运算符“*”来实现对变量a的间接访问。例如,*p=685;当p指向a时,等价于“a=685;”。定义另外一种特殊类型的变量。这种特殊的变量专门用来存放其他变量的地址。例如:int*p;p=&a;*p=685;定义了一个特殊变量p,假设它代表地址5002H指向的内存单元,在该内存单元中存放了变量a的地址10.2指针变

4、量10.2.1指针变量的类型和指针变量指向变量的关系1.指针变量的定义类型标识符*指针变量名;其中类型标识符表示指针变量所指向数据的类型,又称为指针变量的基类型。基类型可以是整型、实型、字符型、数组、结构体等各种数据类型。“*”为指针变量的定义符,表示定义的是一个指针变量,而指针变量名本身不包含“*”2.指针变量的初始化(1)在定义的同时进行初始化。例如:inta;int*p=&a;(2)赋值语句进行初始化。例如:inta;int*p;p=&a;(3)可以用初始化了的指针变量给另一个指针变量做初始化值。例如:intx;int*p=&x;int*q=p;(4)以将

5、一个指针变量初始化为一个空指针。例如:int*p=NULL;10.2.2指针变量的引用1.取地址运算符&取地址运算符&是单目运算符,用于变量名之前,表示该变量的存储地址。2.指针运算符*指针运算符*又称为间接访问运算符,是单目运算符,用来表示指针变量所指向的变量。在*运算符之后跟的操作对象必须是指针。例10.1这个小程序连接了本节中的程序片段,并且添加了输出语句来显示变量的内容和地址。#include"stdio.h"main(){int*p;inta,b,*p1,*p2;floatx,y,*pf;p=NULL;printf("&p=%x,p=%x,*p=%d

6、n",&p,p,*p);a=685;p1=&a;printf("&a=%x,a=%d",&a,a);printf("&p1=%x,p1=%x,*p1=%d",&p1,p1,*p1);b=64;p2=&b;printf("&p2=%x,p2=%x,*p2=%d",&p2,p2,*p2);b=*p1+10;printf("&p2=%x,p2=%x,*p2=%d",&p2,p2,*p2);x=6.83;printf("&x=%x,x=%.2f",&x,x);pf=&x;printf("&pf=%x,pf=%x,*pf=%.2f",&pf,pf,

7、*pf);y=*pf;printf("&y=%x,y=%.2f",&y,y);}程序运行结果为&p=ffc8,p=0,*p=0&a=ffca,a=685&p1=ffce,p1=ffca,*p1=685&p2=ffd0,p2=ffcc,*p2=64&p2=ffd0,p2=ffcc,*p2=695&x=ffd2,x=6.83&pf=ffda,pf=ffd2,*pf=6.83&y=ffd6,y=6.83例10.2从键盘输入两个整数给变量m与n,不改变m与n的值,按照从小到大的顺序输出。main(){intm,n;int*p,*p1,*p2;p1=&m;p2=&n;

8、printf("plea

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

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

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