ImageVerifierCode 换一换
格式:PPT , 页数:19 ,大小:443.50KB ,
资源ID:1135588      下载积分:10 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-1135588.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计第十八讲 指针(1).ppt)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计第十八讲 指针(1).ppt

1、C语言程序设计基础主讲人:庞新苗手机:13560715936第十八讲:指针(1)指针变量主要内容:主要内容:1、指针变量的定义和引用;、指针变量的定义和引用;2、指针变量作为函数参数;、指针变量作为函数参数;一、指针变量例:利用指针变量访问整型、实型、字符型变量。例:利用指针变量访问整型、实型、字符型变量。main()int num_int=12,*p_int;/*定义一个指向定义一个指向int型数据的指针变量型数据的指针变量p_int*/float num_f=3.14,*p_f;/*定义一个指向定义一个指向float型数据的指针变量型数据的指针变量p_f*/char num_ch=p,*p

2、_ch;/*定义一个指向定义一个指向char型数据的指针变量型数据的指针变量p_ch*/p_int=&num_int;/*取变量取变量num_int的地址,赋值给的地址,赋值给p_int*/p_f=&num_f;/*取变量取变量num_f的地址,赋值给的地址,赋值给p_f*/p_ch=&num_ch;/*取变量取变量num_ch的地址,赋值给的地址,赋值给p_ch*/printf(num_int=%d,*p_int=%dn,num_int,*p_int);/*符号符号*p_int用来访问用来访问p_int指向的地址空间的数据指向的地址空间的数据*/printf(num_f=%4.2f,*p_f

3、=%4.2fn,num_f,*p_f);printf(num_ch=%c,*p_ch=%cn,num_ch,*p_ch);1、指针的概念:、指针的概念:内内存存是是以以一一个个字字节节为为单单位位的的连连续续的的存存储储空空间间,每个内存每个内存单单元都有一个元都有一个编编号,称号,称为为内存地址。内存地址。请看下图,变量请看下图,变量i的地址是的地址是1000,变量,变量 i的内容是的内容是30。301000i 用另一个变量记住用另一个变量记住i的地址,这个变量的地址,这个变量就是指针类型的变量,一般称为指针变量。就是指针类型的变量,一般称为指针变量。因此,一个指针变量的值就是某个内存单因此

4、,一个指针变量的值就是某个内存单元的地址,称为某内存单元的指针。元的地址,称为某内存单元的指针。301000i1000p 用用p变量记住了变量记住了i的地址,的地址,p的数据类的数据类型就是指针类型。型就是指针类型。2、指针变量的定义:、指针变量的定义:指针变量的定义格式:指针变量的定义格式:指指针针所所指指对对象象的的数数据据类类型型 *指指针针变变量量名名1,*指指针针变变量量名名2,;定义格式中的定义格式中的“*”表示变量是一个指针变量。表示变量是一个指针变量。int*p;表示表示p是一个指针变量,是一个指针变量,p指向的存指向的存储单元是整型的。储单元是整型的。注意,注意,指针变量与其

5、他变量一样,如果是指针变量与其他变量一样,如果是自动变量并且未赋值,指针变量的值将是不定自动变量并且未赋值,指针变量的值将是不定值。如果想让值。如果想让p p的内容是的内容是i i的地址,需要做一个的地址,需要做一个取地址运算。取地址运算。定义指针的目的是为了通过指针去访问内存单元。定义指针的目的是为了通过指针去访问内存单元。运算符运算符“*”写在指针变量的前面,就是通写在指针变量的前面,就是通过该指针访问它所指向的存储单元。我们在上过该指针访问它所指向的存储单元。我们在上面三条语句后面,再加上一条执行语句,变成:面三条语句后面,再加上一条执行语句,变成:int i;/*定义整型变量定义整型变

6、量i */int*p;/*定义指针变量定义指针变量p */p=&i;/*p指向指向i */*p=3;/*使使i的内容为的内容为3 */最后一句是将最后一句是将p指向的存储单元指向的存储单元i的内容赋值为的内容赋值为3。3、指针和指针变量:、指针和指针变量:.2000200420062005整型变量i10变量i_pointer200120022003指针:一个变量的地址指针变量:专门存放变量地址的变量叫2000指针指针变量 变量的内容 变量的地址指针变量变量变量地址(指针)变量值指向地址存入指针变量&与与*运算符运算符含义含义含义含义:取变量的地址取变量的地址单目运算符单目运算符优先级优先级:2

7、结合性结合性:自右向左自右向左含义含义:取指针所指向变量的内容取指针所指向变量的内容单目运算符单目运算符优先级优先级:2结合性结合性:自右向左自右向左两者关系:互为两者关系:互为逆运算逆运算理解理解.2000200420062005整型变量整型变量i10变量变量i_pointer2001200220032000指针变量指针变量i_pointer-指针变量,它的内容是地址量指针变量,它的内容是地址量*i_pointer-指针的指针的目标变量目标变量,它的内容是数据,它的内容是数据&i_pointer-指针变量占用内存的地址指针变量占用内存的地址200010i_pointer*i_pointer&

8、i_pointerii_pointer&i&(*i_pointer)i *i_pointer *(&i)i_pointer =&i =&(*i_pointer)i =*i_pointer =*(&i)指针变量指针变量指针变量指针变量与其与其所指向的变量所指向的变量之间的关系之间的关系指针变量的定义一般形式:存储类型 数据类型 *指针名;3变量变量i2000i_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointer=33变量变量i2000i_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointe

9、r=3合法标识符合法标识符指针变量本身的存储类型指针变量本身的存储类型指针的目标变量的数据类型指针的目标变量的数据类型表示定义指针变量表示定义指针变量不是不是*运算符运算符例例 int*p1,*p2;float *q;static char *name;注意:注意:1、int *p1,*p2;与与 int *p1,p2;2、指针变量名是指针变量名是p1,p2,不是不是*p1,*p23、指针变量只能指向定义时所规定类型的变量指针变量只能指向定义时所规定类型的变量4、指针变量定义后,、指针变量定义后,变量值不确定变量值不确定,应用前必须先赋值,应用前必须先赋值指针变量的初始化指针变量的初始化一般形

10、式:一般形式:存储类型存储类型 数据类型数据类型 *指针名指针名=初始地址值;初始地址值;赋给指针变量,赋给指针变量,不是赋给目标变量不是赋给目标变量例例 int i;int *p=&i;变量必须已说明过变量必须已说明过类型应一致类型应一致例例 int *p=&i;int i;例例 int i;int *p=&i;int *q=p;用已初始化指针变量作初值用已初始化指针变量作初值例例 main()int i;static int *p=&i;.()不能用不能用autoauto变量的地址变量的地址去初始化去初始化staticstatic型指针型指针例例 main()int i=10;int *p

11、;*p=i;printf(“%d”,*p);危险!危险!例例 main()int i=10,k;int *p;p=&k;*p=i;printf(“%d”,*p);指针变量必须指针变量必须先赋值先赋值,再使用再使用.2000200420062005整型变量整型变量i10指针变量指针变量p200120022003随机随机零指针与空类型指针零指针与空类型指针零指针:零指针:(空指针空指针)定义定义:指针变量值为零指针变量值为零表示:表示:int *p=0;p p指向地址为指向地址为0 0的单元的单元,系统保证该单元不作它用系统保证该单元不作它用表示指针变量值表示指针变量值没有意义没有意义#defin

12、e NULL 0int *p=NULL:p=NULL与未对与未对p赋值不同赋值不同用途用途:避免指针变量的非法引用避免指针变量的非法引用在程序中常作为在程序中常作为状态状态比较比较 例例 int *p;.while(p!=NULL).void *类型指针类型指针表示表示:void *p;使用时要进行使用时要进行强制类型转换强制类型转换例例 char *p1;void *p2;p1=(char *)p2;p2=(void*)p1;表示不指定表示不指定p p是指向哪一种是指向哪一种类型数据的指针变类型数据的指针变量量4、指针的引用、指针的引用main()int a;int*pa=&a;a=10;p

13、rintf(a:%dn,a);printf(*pa:%dn,*pa);printf(&a:%x(hex)n,&a);printf(pa:%x(hex)n,pa);printf(&pa:%x(hex)n,&pa);运行结果:运行结果:a:10*pa:10&a:f86(hex)pa:f86(hex)&pa:f88(hex).f86f8af8cf8b整型变量整型变量a10指针变量指针变量paf87f88f89f86例例 输入两个数,并使其从大到小输出输入两个数,并使其从大到小输出main()int*p1,*p2,*p,a,b;scanf(%d,%d,&a,&b);p1=&a;p2=&b;if(ab)

14、p=p1;p1=p2;p2=p;printf(a=%d,b=%dn,a,b);printf(max=%d,min=%dn,*p1,*p2);运行结果:运行结果:a=5,b=9 max=9,min=5.指针变量指针变量p1 指针变量指针变量p20002008200220042006 指针变量指针变量p2 整型变量整型变量b 整型变量整型变量a5200692008200620082006二、指针变量作为函数参数二、指针变量作为函数参数地址传递地址传递特点:特点:共享内存共享内存,“双向双向”传递传递swap(int x,int y)int temp;temp=x;x=y;y=temp;main()

15、int a,b;scanf(%d,%d,&a,&b);if(ab)swap(a,b);printf(n%d,%dn,a,b);例例 将数从大到小输出将数从大到小输出.20002008200A2002200420065变量变量a 变量变量b(main)9 变量temp 变量y 变量x(swap)559 59COPY二、指针变量作为函数参数地址传递 特点:特点:共享内存共享内存,“双向双向”传递传递swap(int x,int y)int temp;temp=x;x=y;y=temp;main()int a,b;scanf(%d,%d,&a,&b);if(ab)swap(a,b);printf(n

16、%d,%dn,a,b);例例 将数从大到小输出将数从大到小输出值传递值传递.20002008200A2002200420065变量变量a 变量变量b(main)9运行结果:运行结果:5,9swap(int *p1,int *p2)int p;p=*p1;*p1=*p2;*p2=p;main()int a,b;int*pointer_1,*pointer_2;scanf(%d,%d,&a,&b);pointer_1=&a;pointer_2=&b;if(ab)swap(pointer_1,pointer_2);printf(n%d,%dn,a,b);.20002008200A200220042006200C200E2010.59整型变量整型变量a 整型变量整型变量b(main)指针指针pointer_1指针指针pointer_220002002(swap)指针指针p1指针指针p2整型整型p5920002002COPY5例例 将数从大到小输出将数从大到小输出作业作业(237)输入三个数,利用指针的知识求输入的三个输入三个数,利用指针的知识求输入的三个术的最大值和最小值。术的最大值和最小值。

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922