C语言PPT课件第08章指针.ppt
《C语言PPT课件第08章指针.ppt》由会员分享,可在线阅读,更多相关《C语言PPT课件第08章指针.ppt(65页珍藏版)》请在三一办公上搜索。
1、,指 针,绳钡兑研朱婪肘煽诲榨继衔硝含邀愁捌赋锻踊酉涂俞罗到指熔牟刚篮轰漱C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 2 页,第7章 指针,第一节 地址和指针的概念第二节 变量的指针和指针变量第三节 数组指针第四节 字符串指针第五节 函数指针第六节 返回指针的值第七节 指针数组第八节 小结,套乖律额艳俄趟全临籽纂概婴渍槽鞍焰冉迈枫弹利菱妈纸羞瞳绑撅噬伦未C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 3 页,第7章 指针,指针是C语言中的一个重要的概念,正确而灵活地运用它,可以有效地表达复杂的数据结构;能动态分配内存;能方便地使用
2、字符串、数组、函数;能直接处理内存地址。可以说,不掌握指针就不掌握C语言。,介襟蔑迹艰乱鞍钧凤庭另祁锄痛恋盆精查韧氖绸面廖诌叹锯卧家沸嫌唱仟C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 4 页,两个概念内存单元:程序中定义的每个变量,都在内存中占有一定的空间,称为内存单元。内存单元地址:内存区的每一个字节有一个编号,称为内存地址。,7-1地址和指针的概念,锚苏禽介横上契孜此澜乌既宗卿守狂借库湿骄端阑险猎诛抚开羊细气臂催C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 5 页,例如程序定义了三个变量:Int a,b,c;则系统给出三个单
3、元:地址1 地址2 地址3,7-1地址和指针的概念,赎岳鹰葵断鄙揩泵崖胁蝎热挟宁腹邦啄昆声挟熄渔胖际希放冯冈缎逆牌熙C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 6 页,实际上一个变量有三个值:地址、变量名、值。例:Int a=3,b=7,c=9;地址 变量名 值 地址1 地址2 地址3,7-1地址和指针的概念,么窿塔王培梨隔曳笑副曹刹夫迎括悄浸毫稻侮患蜒客己苫韵纷佯聘蓄蹿盟C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 7 页,内存单元的大小:程序中不同类型的变量,大小也不一样。*实型变量:占有 4 个字节。*整型变量:占有 2
4、个字节。*字符变量:占有 1 个字节。注:1个字节为8位:,7-1地址和指针的概念,7 6 5 4 3 2 1 0,喂扩锁邑绢价候瓶裂臃榨遭鉴临昏柏辅贝脱骡扔宇土沪枯铺容咒戒翔霉假C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 8 页,例:程序定义了3个整型 内存用户数据区变量i、j、k,编译时系统分配置2000和2001两个字节给变量i,2002和2003字 2000 3 变量i 节给j,2004,20005给k。2002 6 变量j则有:变量 开始地址 2004 9 变量k i 2000.j 2002.k 2004 3010 2000 i-pot 单元内的内容
5、就是变量的值,7-1地址和指针的概念,怔鉴嫁忽排冻卵供即姿晾宽但饼作炽散跑炕彼蛰玫沪詹储侯涸再蒲洗杉照C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 9 页,对变量的存取是通过地址 内存用户数据区来进行。如果语句中有:“k=i+j”,则从2000、2001字节取出I值(3),再从 2000 3 变量i 2002,2003字节取出j值 2002 6 变量j(6),相加后得(9),2004 9 变量k 送给k所占的2004,.2005单元。.这种存取方式称为 3010 2000 i-pot“直接访问:方式。,7-1直接访问方式,继剖渍耍对抨冶抹娥饮谈俩厨丑灭熊眺燥眯敢
6、级输篆湍般标傈薛巴溅捻啪C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 10 页,也可以采用另一种存取方式,内存用户数据区变量I的地址存放在另一个变量Ipot中,即:Ipot=这样,Ipot的值就是2000,2000 3 变量i 即变量I的起始地址。要存 2002 6 变量j取I的值,也可以从变量 2004 9 变量kIpot中取出I的地址(2000).然后到2000,2001处取出.I的值(3)。3010 2000 ipot 这种存取方式称为:“间接访问:方式,7-1间接访问方式,眺缠亨青闪赏卿锄封雨啸哥绸校懂靶嗣皑稠纯德胆济镁颗禹甄绵炭仪艺南C语言PPT课件第
7、08章 指针C语言PPT课件第08章 指针,共 20页 第 11 页,7-2地址和指针的概念,*什么叫做指针?举两个日常例子:(1)每个同学的记分表都有这三栏:编 号 姓 名 分数 1001 王 刚 70 1002 李 鹏 78 1003 张 三 92那么,要对某个同学记分和查分都是通过编号进行,编号就是姓名的指针。,浑淀没选穿稻发墒弗雾究路找忧湃河借座磊贬壮旨盅岁痊烃医畸锦狱可箩C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 12 页,指针:由于通过地址能找到所需的变量单元,我们称一个变量的地址为该变量的指针。地址1(指针1)地址2(指针2)地址3(指针3),7
8、-1地址和指针的概念,菠蓝纫葱既娱犀袖袍卯东锋度误镍肃信谅博瑟肚烽甩菜俩何蠢畸疫泊畏琢C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 13 页,指针变量:一个变量,是用来存放另一个变量的地址,则它称为指针变量。,地址和指针的概念,痛张怂仕制卒郧豹究寥食莆赐钠笆进李毕催牺另匿居笔赛疑凶逃商怀展烈C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 14 页,指针变量的定义格式 基本类型*指针变量名例:float*p1;/*实型指针*/int*p2;/*整型指针*/char*p3;/*字符指针*/注意“*”号 不能省略。,7-2-1定义一个指针
9、变量,播僵驹邹粕嘴笋抵力夕泅碉葱肄恐舶魁式氟厂庄幽邱央藉昔媚寨匝醉汤箭C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 15 页,例:通过指针变量的赋值。必须在变量面前加上地址赋值符号:“/*变量c的地址赋给指针p3*/,7-2-2指针变量的引用,款裸奉客奏采辩构师嫁习刷毙苦状巨音族拉窍窘澡夹蛋轰份稗反凳殊菱描C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 16 页,指针变量的使用。如果有:int a,*p1;a=100;p1=,7-2-2指针变量的引用,救骗瓮矣骂幌壶逃慷拦颁沙屉甥迈厕协吏政离疫恫俱粘铜即欢蛙厦聋阳仓C语言PPT课件第
10、08章 指针C语言PPT课件第08章 指针,共 20页 第 17 页,同样有:Float b,*p2;b=3.12;p2=,7-2-2指针变量的引用,屋谁念桥汹棵盘瑶咽箍邱咀筷粗剖铸琴楞绊琐霹酷涯晨攀雌舒昨华玩挞涯C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 18 页,因此,只要有:Float b,d,*p2;p2=,7-2-2指针变量的引用,是矽杯郑慰宪逻廷穗爆荚拣刃厉躇芬储鄙犬黄漏衫致论句兵帚搏厨接苔诸C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 19 页,例:通过指针变量访问整形变量。Main()int a,b,*p1,*p
11、2;a=100;b=10;p1=结果为:100,10 100,10,7-2-2指针变量的引用,倒攀删勒霓识轧痈搽泼庸徘主洁墟饲殿羔选抓枷揽鳖釜暴明秘镇态娩皱伍C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 20 页,注意:(1)指针变量前面的“*”,表示该变量的类型为指针 型变量。(2)在定义指针变量时必 须指定基本类型 原因是:单位字节数不同。实型指针变量一个单位是 4个字节。型型指针变量一个单位是 2个字节。字符型指针变量一个单位是 1个字节。指针变量的赋值 point-2=/*字符变量a的地址赋给指针*/,7-2-1定义一个指针变量,200020012002
12、2003200420052006,实变量f,型变量i,字符a,绣莱蚜趋渤汕氮助擅馆赣滓淳摇题仿辜阿冤福避狼罢聘物喘边炕万骋秘仿C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 21 页,例:输入a,b两个整数,按先大后小输出a和b。Main()int a,b,*p1,*p2;Scanf(“%d,%d”,输入 5,9 结果为:a=5,b=9 max=9,mix=5,7-2-2指针变量的引用,江系獭用钦仕原楞啃砷撼蛆铱跨咒轮演筒枪桥男鼓偿沃援懊早腑骑九痊莉C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 22 页,当输入a=5,b=9时,由于
13、ab,将p1和p2交换。如图:注意:a和b并未交换,但p1和p2的值改变了。P1的为&a,现为&b,p2原为&b,现为&a。,7-2-2指针变量的引用,p,&b,&a,p2,a,p1,p,9,b,5,b,a,p2,p1,9,&a,&b,畅裙慷船愿鸿执翼旗翼拴瑟磊设源闻衬弧裂愤磅逻锰仿籽秧贺丁列殃让糕C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 23 页,函数的参数不仅可以是整型、实型、字符型等,还可以是指针型。指针变量作为函数参数的作用是:将一个变量的地址传送到另一个函数中。再举上例:输入a,b两个整数,按先大后小输出a和b。,7-2-3指针变量作为函数参数,光
14、鄂促俱郊重硷抠专矛翌组幸篇它浸号逆姬偏诌就卿该闯啤忍浩汤匙惫绷C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 24 页,main()int a,b,*t1,*t2;scanf(“%d,%d”,7-2-3指针变量作为函数参数,匈浊拜摆哀携景磺熏锨毯胜陇恃台颊秃寐鸥吸穿阻卯券任倒丧衷争筑中喻C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 25 页,子函数 sw 的作用是交换两个变量a和b的值。Sw(int*p1,int*p2)int temp;temp=*p1;*p1=*p2;*p2=temp;运行情况如下:输入:5,9结果:9,5,7-
15、2-3指针变量作为函数参数,疮大宣讹艳氛停填垣膘叉诧累榆搁宴咙宗何束萄鸣赎秀略伪空赌澈虏灿颧C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 26 页,当t1=&a,t2=&b时 当调用sw(t1,t2)时如图:,7-2-3指针变量的引用,&b,&a,p2,a,p1,9,b,5,b,a,p2,p1,9,&a,&b,&b,&a,t1,t2,惺撮钵魄芦骋含份胁愤斑倔匈掐蓖野郧荡胜逝卓毯螺袋愁爵均伯撤炙恼魁C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 27 页,当执行函数sw(t1,t2)时 当返回主函数时,7-2-3指针变量的引用,&b,
16、&a,t2,a,t1,9,b,5,b,a,p2,p1,9,&a,&b,&b,&a,t1,t2,5,函数调用结束后,p1和p2不复存在(已释放),郭瑞作诅碾枢摘辣米源袋消君等驳沂宙毖盎赚阎局耗更须柱时雍缔谩阎探C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 28 页,数组与指针的关系每一个数组元素都有地址。该地址就是数组元素的指针。概念假设:int a100;数组名:数组的标识 a数组元素的地址:数组中一个具体元素的地址(&ak)数组首地址(数组起始地址):数组中第一个元素(0号元素)的地址(&a0或用数组的名称 a 表示)。,7-3数组与指针,民首震兢炔想升塞梁厦
17、均葱负迄似厕髓奋腺镰鹅珐夏舅泽究丘皆桶哭蝗镜C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 29 页,C语言规定:数组名就是数组的首地址常量。那么下面关系表达式成立:a=将第一个元素的地址赋给p,实际上是首地址赋给p。与下条语句等价:p=a p就称为指向数组a的指针变量。,指向数组的指针,&a0,a0,远檀蝉洞情居鹊她席然壶详诣棵晓缓姚丧省憎设爵辛树窒膏稚猖六骄年蕾C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 30 页,C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。例如:int a4,*p;p
18、=则:p+1 a1 p+2 a2 p+3 a3,7-3指向数组的指针,注:这里的p+1是指加上一个单元,不同的变量,单元的大小不同。整型指针变量p+1等于p的地址 加上2个字节。p+2=p+4个节。(实型:p+1=p+4个字节。字符型:p+1=p+1个字节。,昂恶躇闭党侵嫡庞挖辊铅贾凿亥走潘力犁夸额险纂差挡皆向窘晰仲帜数扑C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 31 页,例C5_5001.C:分析程序。#include main()int a=1,2,3,4,5;int x,y,*p;/*指针变量 p*/p=,7-3数组与指针,例C5_5001,/*指针
19、p 指向 a0,等价于p=a*/,/*取指针p+2的内容,等价于x=a2*/,/*取指针p+4的内容,等价于y=a4*/,散铸呀试梁里栏粘嵌社辛厘玩折规赫砍忌涛暂苫固瘫芦犹叶闸兰欠供茎会C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 32 页,例C5_5002.C:分析程序。main()int a=1,2,3,4,5,6;int*p;p=a;/*指针p为数组的首地址*/printf(%d,*p);printf(%dn,*(+p);printf(%d,*+p);printf(%dn,*(p-);p+=3;printf(%d%dn,*p,*(a+3);,7-3 数组与
20、指针,例C5_5002,指针初始化,第一个输出,第二个输出,第三个输出,第四个输出,第五个输出,p=a,取p的内容,p先加1再取内容,p先加1再取内容,取内容p再减1,取p的内容,p+=3,p,p,p,p,p,p,语句执行,指针p指向,地址,数组,梆碌昭茅箕囱贷闭活完樱陕希淹癸嘿籽榴潭访卒争贼奋羔性佳淆釜刘省姨C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 33 页,在函数之间传递整个数组实际参数用数组名。形式参数用指针时,在被调用函数的内部,就可用指针方式访问数组中的元素。说明由于数组名代表数组的首地址,传递数组名也就是将数组的首地址传递给被调用函数。,7-3-
21、3 数组名作为函数,萄耪陌学陕鞋翅迈训涸变煌翁哨匣听蕴概聚触焰扎锑佑梢菜途痢恭啸哦毫C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 34 页,例:编写字符串复制函数。main()char a30,b30;printf(Enter string:);scanf(%s,a);strcopy(a,b);/*调用函数的实参为数组名*/printf(a=%snb=%sn,a,b);strcopy(str1,str2)/*将串str1拷贝到串str2中*/char*str1,*str2;/*形参为指向字符的指针*/while(*str2=*str1)!=0)/*通过指针操作数
22、组*/str1+;str2+;5-5 数组与指针-串复制,7-3 数组与指针-串复制,例C5_5003,暑篙搂诺车思欣唯篇止父关暗痘效内轮惑赂仓嘴疽券孵煎蒙骸登芹雀怨浚C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 35 页,例:改进字符串复制函数。改进一:strcopy(str1,str2)char*str1,*str2;while(*str2=*str1)str1+;str2+;改进二:strcopy(str1,str2)char*str1,*str2;while(*str2+=*str1+);/*通过指针操作数组*/,7-3数组与指针-串复制,例C5_500
23、31,例C5_50032,亮损蓖针甲故铆卜菱朋菩绎曼栓赛种础先吸饲虾愧了蹄潮溢吐爹灭晶误妨C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 36 页,对于指针的三种基本运算指针与正整数的加减运算两个指针的关系运算两个指针的减法运算与指针相关的运算操作取地址运算(&)取内容运算(*),7-3指针的基本运算,虱胆蛾盯虑尝澄猫迁淌脏喘凰须侮俄仔幅帅闭黎砾歌姨大县韩琵炳镶琢横C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 37 页,指针与正整数的加减法当指针 p 指向数组中的元素时,n为正整数:p+n表示:指针p所指向当前元素之后的第n个元素;
24、p-n表示:指针p所指向当前元素之前的第n个元素。p+和+p含义:指针加1,指向数组中的下一个元素;p-和-p含义:指针减1,指向数组中的前一个元素。,7-3 指针的基本运算-指针加减运算,p-2,p-1,p,p+1,p+2,.,.,p-3,杭坝颊垦伯碑函找抢唆滓朋俺葬嚎扦匿索屠队没怒才腆埠摧寺题萎弄殊逛C语言PPT课件第08章 指针C语言PPT课件第08章 指针,共 20页 第 38 页,设 int b,c,d,e,a4;p=相当于 e=+a0,先取a0=a0+1 等于4,后 赋给d。,7-3指针的基本运算,啤烧垄细懂楞扒汹芒叁根警剥顿夕雨鳖痞萎捆民掠筑肆谨容彻内晌磐殉芦C语言PPT课件第0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 PPT 课件 08 指针
链接地址:https://www.31ppt.com/p-5276316.html