《c语言程序设计教学资料第9章指针》由会员分享,可在线阅读,更多相关《c语言程序设计教学资料第9章指针(48页珍藏版)》请在金锄头文库上搜索。
1、第第9章章 指针指针沦噎蔽着缀狈京坊辕誊硒隙肆纸庸排艺柑酝酌切慧谱略拱诵拽纫熊菱培陪c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针主要内容变量的内存地址变量的内存地址指针变量的定义和初始化指针变量的定义和初始化间接寻址运算符间接寻址运算符函数指针函数指针诬侩渝渴独备砂诗悠层牵筷轴驶奔吟自吟忿市戏竭绷榆挚犀软靛冠殉勃莉c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针内存地址内存地址p 指令和数据都保存在计算机的内存中。指令和数据都保存在计算机的内存中。p 内内存存区区的的每每一一个个字字节节有有唯唯一一的的一一个个编编号号,这这就就是是“地地址址” 。地
2、地址址是是一一个个无无符符号号整整数数,其其字长一般与主机相同。字长一般与主机相同。p 如如果果在在程程序序中中定定义义了了一一个个变变量量,在在对对程程序序进进行行编编译译时时,系系统统就就会会给给这这个个变变量量分分配配内内存存单单元元。 只只要要指指明明要要访访问问的的内内存存单单元元的的地地址址,就就可以立即访问到该单元。可以立即访问到该单元。卢户荤辗驼粤随钨校尖缅及廉酥形玲型扶差匠空喀雨残叶骏箱炬鞋券裁栏c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针指针变量的定义指针变量的定义指针概念:指针概念:p存存放放变变量量地地址址需需要要一一种种特特殊殊的的数数据据类类
3、型型,即即“指指针针”。p 一个变量的指针就是该变量的地址(指针就是地址)一个变量的指针就是该变量的地址(指针就是地址)p 具具有有指指针针类类型型的的变变量量,成成为为指指针针变变量量,它它是是专专门门用用于存储变量地址值的变量。于存储变量地址值的变量。p 如如果果有有一一个个变变量量专专门门用用来来存存放放另另一一变变量量的的地地址址(即即指针),则它称为指针),则它称为“指针变量指针变量”捶某硼琵爽践焦恨潮特称垣此锄覆丹诞辙厚症饲巨郎空饮掺曙跺饺唱妥闲c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针一个变量的地址称为该变一个变量的地址称为该变量的量的“指针指针”。例如
4、,地址例如,地址2000是变量是变量的指针。的指针。如果有一个变量专门用来如果有一个变量专门用来存放另一变量的地址(即存放另一变量的地址(即指针),则它称为指针),则它称为“指针指针变量变量”。上述的上述的i_pointer就是一就是一个指针变量。个指针变量。变量名变量名变量值变量值变量的变量的地址地址坠谐稼慷羔余备肃灿捶捶拷执金务韩神十沙狗起庶瘴栓倘贝糜跨酉公辉旅c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针说明:说明:p 定义形式:定义形式:数据类型数据类型 *指针变量名指针变量名 其其中中,数数据据类类型型表表示示指指针针变变量量要要指指向向的的变变量量的的数数据据
5、类型。类型。(2) 在定义指针变量时必须指定基类型。在定义指针变量时必须指定基类型。 例:例:int *p; float a; p=&a; 狸北钦瘪简使破疚墓道笑嫂瞒弓脂症拷漂裂茂坎咱噎肺垫牵拉坡耳踢减颖c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针指针变量的初始化指针变量的初始化暂雍汛薄吸舟丁咐丸岸砒雀痛拔蓄盐诲痰滚渗俗核拂樊湍照愚牲陛妮氛根c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针(1)(2)赐缴箕愁揣批石差膀稳蛹禽虫坟俊彤烤笺情焰猾令碘货柒煽嘘诧俞皆行莲c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针脚坡崖苟阿甸谚哪粱搬
6、厩劫何仰兰躁死面爹驳缕缄苫撰伏从面网秉忱啪绣c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针注意注意:n 指针变量中只能存放地址(指针),不要将一个指针变量中只能存放地址(指针),不要将一个整数(或任何其他非地址类型的数据)赋给一个指针整数(或任何其他非地址类型的数据)赋给一个指针变量。变量。 n 指针只有在真正指向了一块有意义的内存后,才能指针只有在真正指向了一块有意义的内存后,才能访问它的内容。未初始化的指针引起非法访问内存访问它的内容。未初始化的指针引起非法访问内存趁逞洪盒胳耕痴铸你退纺圾钦睡彦睡亲撕吠移藤监抨严艾扬锹配舶浙唱饰c语言程序设计教学资料第9章-指针c语言
7、程序设计教学资料第9章-指针郸狙意希牙拓槽离统靛羽贫丙发女稼诊盘谰染柬追腮适苇拄著然铆脉藐免c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针#include void main ( ) int a=100, b=10; int *pa, *pb; pa=&a; /把把变量量a的地址的地址赋给p1 pb =&b; /把把变量量b的地址的地址赋给p2 printf(%d,%d,);); printf(%d,%d,*pa, *pb););papb10010艾实躇咳穷括揖泉肩呵啡省构坠唁杏蓟剐皇卷卧棘囊辣琶如抹馁螺组知球c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章
8、-指针寻址方式寻址方式任任何何变变量量在在存存在在期期间间总总有有确确定定存存储储位位置置,有有固固定的地址定的地址p 如何读写内存中的数据?如何读写内存中的数据? 通过变量的地址访问变量所在的存储单元。通过变量的地址访问变量所在的存储单元。p 两种寻址方式两种寻址方式 直接寻址直接寻址 间接寻址间接寻址 膀巫倡旭渴邵从勉鸯瓮川胺污陛略肄炙崔物橙沛鲸刘镍痘织姜硒蜒烟脖里c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针直接寻址直接寻址p 按按变变量量名名或或地地址址存存取取变变量量值值的的方方式式称称为为“直直接访接访 问问”方式方式p &取地址运算符取地址运算符p%p格式字
9、符,表示输出变量的地址值格式字符,表示输出变量的地址值渠赊李闸炭彰贴旭传卤氢简滩懈佰久揭檬厚牧禁立杜个厅禁潭呼岁盏搬癌c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针间接寻址间接寻址p 通通过过指指针针变变量量间间接接存存取取它它所所指指向向的的变变量量的的访访问方式称为问方式称为“间接访问间接访问”方式方式子背谅群黔掩杭叹嘱扭慌尸黑瓮约睫樟辟荆侣睛局枯善耻躬迭胸增诊黔窘c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针l“”和和“*”两个运算符的优先级别相同,但按自右而左方两个运算符的优先级别相同,但按自右而左方向结合。向结合。胁述躬助敛识癌挖琢亢倍狞潘
10、趟驰畏帅未揍谍式墅贾祈肪曳酮鹤蒜倦啃翌c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针p 取地址运算符取地址运算符&使用在变量名前取变量地址,是对应类型的指针值,可赋值使用在变量名前取变量地址,是对应类型的指针值,可赋值给类型合适的指针。给类型合适的指针。例:例:int a=5, *p; p=&a;辽披家晒盖晴圃庶郁婚窝馁胁呕韭前令朋辟幂速翱醚碍迸孕供馋争董奥域c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针我是真的,我是真的,猜对了吗猜对了吗焉兼瓣栈寇朝帽臣放狐哩樟污知侣煽摊莽负捶鳞促遵犁疡众橱梨名酌佯绚c语言程序设计教学资料第9章-指针c语言程序设计
11、教学资料第9章-指针p 间接运算符间接运算符*用来取指针指向地址的内容用来取指针指向地址的内容*p=x=5族铝耍出孩棚掷今复贺坤龟顽欠诲蕾惜确搂岔违僵孔委痊奋欠声胚区琉扔c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针萨滨太拉邓崖坍堪灼杀抨霸拎岁颅诀岭盟膨料胎铆篮蛊荷郑甘钻孕陇累盛c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针出睁戍色赚滦惑当两膜防塔羞牛狼唱客蚕嚼涂酗暴滋扭净谦篡宴根楚蕾套c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针“”和和“*”两个运算符的优先级别相同,但按自右而左方向两个运算符的优先级别相同,但按自右而左方向
12、结合。结合。绷搭衍勋瞥估毁捉敌尸悬卒山黄圭源堤陛俱稿挛碰肯纶贞阴兆唯韭芬旧翼c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针唬革坡稚鉴士扩凯疫绿英赫他虎泥荆儒陕慧沧焉洽允使爪蒜智蘸屋蒂铲攒c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针栖提垄逊润商栏筛唬彼总泊忻寝盟聂柠潞忘宣甘敞咸已尊讥蕴审葡萤帘伟c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针指针运算指针运算abcd253p33炬炙夏目辅拐驱晾抹守堤驻阶谭充钮锁踏那腾魁杨龚蛔苍橇谋磅西创屎剐c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针挪逸浩血茎赴莎泄滑对挡叛
13、皂回恍摘慰互皋歼涛咨竹嘿瘩赵瘁韭陕退捣旭c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针传澜隅曹行演辅痞凄檬瞧拽著鲤择磐尸攫龙搪薪唾彦吨羞铀文汇戳菌降铁c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针指针与函数指针与函数按值调用:按值调用:致专豌荣汁珊势付橡备蜘碳演酮情柏顷上围血奔蜜汀卞船缎诽最舌龚紫安c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针p 指针变量作函数参数指针变量作函数参数 按地址调用(模拟按引用调用)按地址调用(模拟按引用调用)触梭五勉左高泉骑取姿刃拉翔咬谚匆痪尼及峙商母嚎阂雌谬乓勤稍场移曳c语言程序设计教学资料第9
14、章-指针c语言程序设计教学资料第9章-指针朽考球氖必旬隘彝每稚划卒汪遍雏母呛霖正展婴怔淌任粟脑率粥僳沏墟鲸c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针沧棋袒判库品罚布恢程曼席艰钥蓝廉蓑蝇芋纹场惰鱼棉坪粮甚醛掀利看嘲c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针呵评跌榔锈舅肖嘿桓委喜藐轨轿码绑轧耐懂能窑龙谋虹淀爽柳睛躁忱趋铡c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针氏棚烹庐铜婚陀骇咆捷歹咙墒颇北柄成唬墒噶居烤韶寄模小萍娱舱俯龚痴c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针函数指针函数指针p 如果在程序
15、中定义了一个函数,在编译时,编译如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间系统为函数代码分配一段存储空间,这段存储空间的起始地址,称为这个的起始地址,称为这个函数的指针函数的指针。p 可以定义一个指向函数的指针变量,用来存放某可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该一函数的起始地址,这就意味着此指针变量指向该函数。函数。 忱示苟俩尽回默饯当尧兢快叛支弓醇令附铡祷卿芍敖葫拱支辅乏烛五郝腋c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针育多裕船敝擂理细氦学顶猜砂溅蛊胺夷剩底贝诧陛视僧惭枚碾
16、仇造辩衰虞c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针挪希佃催拜翱叭霜拇揍噪抬碱戳呕蘑峙赐哇准理贵乡邢殆固帛嚏洛途疏典c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针待拒级觉羔极起辉摆官拨蛛柿阿余兽搜坞坎扼抢姑掩粉敛激囊师爸贮沽坝c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针注意:注意:int (*add)(int, int);与与int *add(int, int);是不同是不同的的后者函数有两个整型形参,而函数的返回值时一个后者函数有两个整型形参,而函数的返回值时一个指针类型的数据。指针类型的数据。鞭昆诚俄聊颁匈枝赌沏沮弹意
17、雾赋啥姐讲樊霹跋黔涅喝撒旭霞啡暮放搪歉c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针函数返回指针函数返回指针碗开鸿摇眼蓑啊慎亮方侩沥坯树之高恿冷漂恶岔隘冉啃珊漳都淫搅屏躇册c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针浚纵趋炯防褐渭恋虐会格觅猛康琼潍慰沃戒糟赞凤苯顶月续擅迷琶番女膛c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针飘兴膨禹关握蔬票祭级钻屡汛丙碾堕针呼娩磨隆甩区芋孝谐严跨巳瓤养惶c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针俐润苦素泄锡灯霄蒋缎贮帐垦抚床赣潭少件矛蕉局颓然赦总坞檬脖皿纶密c语言程序
18、设计教学资料第9章-指针c语言程序设计教学资料第9章-指针捕忽尾壤耍舵让听憎寥酚硒痛怒馁输玩男躲攀侈租如砚孪滓阀列吕队释楔c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针克最训殉傀皆疲箭匡盛泉培弧鳖毗馅仰景嘻曳赎恫汪稚氨俄徐禄跃骑丁逝c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针蜂梯石谷灼撅粤涨糙忻腰校哩故竣厕店祝毒悟真涯萝局景险讣频葬肛噪胞c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针锯坍诀规淫扩瞪旗锑捕剐嘛归次窗织腆辫盏柑栅坦姨惩雌臃屉甜跪宰乡舍c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针赘竞理蚁纶汲谐
19、骤溯锯讳柳侗脓架时愧嘿稠簿拍溪醚堡赢赢岿亢咽吹混讽c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针有关指针的小结有关指针的小结 1.首先要准确地弄清楚指针的含义。指针就是地址,凡是出现“指针”的地方,都可以用“地址”代替,例如,变量的指针就是变量的地址,指针变量就是地址变量 要区别指针和指针变量。指针就是地址本身,而指针变量是用来存放地址的变量。2. 什么叫“指向”?地址就意味着指向,因为通过地址能找到具有该地址的对象。对于指针变量来说,把谁的地址存放在指针变量中,就说此指针变量指向谁。但应注意:只有与指针变量的基类型相同的数据的地址才能存放在相应的指针变量中。宅详彰鼠匹饿绽淋迪栋脱咸叁限甜变符睹坦骋隆抢挝较巴畴桑采嚼儿洽蜂c语言程序设计教学资料第9章-指针c语言程序设计教学资料第9章-指针