c语言讲义第九章.ppt

c语言讲义第九章.ppt

ID:58044959

大小:1.19 MB

页数:89页

时间:2020-09-04

c语言讲义第九章.ppt_第1页
c语言讲义第九章.ppt_第2页
c语言讲义第九章.ppt_第3页
c语言讲义第九章.ppt_第4页
c语言讲义第九章.ppt_第5页
资源描述:

《c语言讲义第九章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第九章指针C语言程序设计1本章要点1.理解指针与地址的概念;2.掌握指针的定义和运算;3.掌握指向基本类型、数组、字符串的指针的使用;4.充分理解指针和数组的等价性;5.掌握指针函数和函数指针的使用;6.了解指向指针的指针的概念及其使用。2预备知识内存:就是内部存储器,是由存储单元组成的。它的特点是存储单元是线性连续的。存储单元的最小单位是字节。1.内存的概念3地址:为了访问内存中的某个存储单元,我们要为它编号,这种编号称为内存地址。通过地址我们就能够访问该地址所标识的存储单元。2.地址的概念4变量的地址:变量的地址是变量在内存中占用连续字节的首地址。2007存储单元5以往对变量的访问:

2、定义变量:intk;编译系统根据类型为k分配内存。输入变量的值:scanf(“%d”,&k);&k就代表了变量k在内存中的地址。通过变量名访问变量,这种操作称为直接访问;通过指针间接访问:C提供了另一种方式,将变量k的地址存放在另一个变量处(假定为pk),通过访问pk,就可以间接地访问变量k,这种方式称为间接访问。变量的存取方法:直接存取和间接存取。6引入指针程序设计的优点有效表示复杂的数据结构。方便使用字符串、数组。可以得到多个返回值。可以进行动态分配内存。程序简洁、紧凑,执行效率高。79.1.1指针的基本概念指针:一个变量的地址称为该变量的指针。指针变量:若一个变量专用于存放另一个变

3、量的地址(指针),则称此变量为指针变量。若指针变量p的值等于变量x的地址,则说指针变量p指向变量x。1000351000pxx的值p的值X的内存地址9.1指针的基本概念及指针变量的定义8指针的对象:当把变量的地址存入指针变量后,就可以说这个指针指向了该变量。99.1.2指针变量的定义指针变量定义的一般形式:类型标识符*标识符[例]:float*p1;int*p2;作用:定义变量为指针类型,使之专门用于存放地址。指针所指的变量的类型指针变量名10说明:(1)*用于定义指针变量,但指针变量名不带*。如int*p1;float*p2;定义的指针变量为p1,p2(2)一个指针变量只能指向同一类型

4、的变量。如p1只能用于指向整型变量p2只能用于指向实型变量(3)无论指针变量指向何种类型,指针变量本身都是整型的,指针变量本身也有自己的地址,占两个字节的存储空间。111.取地址运算&格式:&变量设有变量说明inta,b,*p,*q;p=&a;把a的地址赋给p,使p指向aq=p;让q也指向a,使p、q都指向ap=&b;让p指向b,使q指向a,p指向b9.2指针变量的引用和运算C语言提供两种与指针有关的运算符:&*122.取内容运算*格式:*指针表达式设p是一个指针表达式,则:(1)若*p出现在赋值号左边,表示给p所指变量赋值(2)若*p不出现在赋值号左边,表示p所指变量的值若有变量说明:

5、inta,*p;p=&a;让p指向变量a*p=10;等价于a=10printf(“%d”,*p);打印p所指变量的值scanf(“%d”,&a);给变量a输入值scanf(“%d”,p);给变量a输入值*p+25等价于a+25133.为指针变量赋初值指针变量使用前必须有值指针变量的初值必须是地址值(不能是整数)方法:在说明指针变量时同时初始化inta,*p=&a;(2)使用赋值语句赋值inta,*p;p=&a;可以为指针赋空值(NULL),此时指针不指向任何变量,如p=NULL或p=‘’;p=0;(p为空指针)14对*及&的说明:(同级运算,由右向左)若pa=&a(将a的地址送指针变

6、量pa),则&*pa&(*pa)&(a)&a*&a*(&a)*paa(*pa)++a++*pa++*(pa++)(先取*pa值,然后使pa加1)*++pa*(++pa)(先使pa加1,再取*pa值)注意:此时pa不再指向a15[例9-1]输出变量的值。main(){inta,b;int*pa,*pb;a=100;b=10;pa=&a;pb=&b;printf(“%d,%d”,a,b);printf(“%d,%d”,*pa,*pb);}定义指针变量pa,pb将a的地址送pa将b的地址送pb输出所指向的变量运行结果为100,10100,1016[例9-2]将两个整型

7、数a,b按由大到小次序输出。main(){int*p1,*p2,*p,a,b;scanf(“%d,%d”,&a,&b);p1=&a;p2=&b;if(a

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

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

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