- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机二级必备之 第06章 指针12_23
指针是C语言中的一个重要概念。掌握指针的用法,可使程序简洁、高效、灵活,但并不难学。 为了了解什么是指针,先看一个小故事 地下工作者阿金接到上级指令,要去寻找打开密电码的密钥,这是一个整数。几经周折,才探知如下线索,密钥藏在一栋三年前就被贴上封条的小楼中。一个风雨交加的夜晚,阿金潜入了小楼,房间很多,不知该进哪一间,正在一筹莫展之际,忽然走廊上的电话铃声响起。艺高人胆大,阿金毫不迟疑,抓起听筒,只听一个陌生人说:“去打开211房间,那里有线索”。阿金疾步上楼,打开211房间,用电筒一照,只见桌上赫然6个大字:地址1000。阿金眼睛一亮,迅速找到1000房间,取出重要数据66,完成了任务。 6.1 指针变量 变量与地址 直接访问与间接访问 直接访问:按变量地址存取变量值。 指针变量 指针变量与其所指向的变量之间的关系。 指针变量的初始化 与*运算符 #includestdio.h void main() { int a,b; int*pointer_1, *pointer_2; a=100; b=10; pointer_1=a pointer_2=b; printf(%d,%d\n,a,b); printf(%d,%d\n,*pointer_1,*pointer_2); } 指针变量作为函数参数 作用:将一个变量的地址传送到另一个函数中。下面通过一个例子来说明。 swap(int x,int y) {int temp; temp=x; x=y; y=temp; } 如果在main函数中调用swap函数:swap(a,b); 为了使在函数中改变了的变量值能被main函数所用,不能采取上述把要改变值的变量作为参数的办法,而应该用指针变量作为函数参数,在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化依然保留下来,这样就实现了“通过调用函数使变量的值发生变化,在主调函数(如main函数)中使用这些改变了的值”的目的。 如果想通过函数调用得到n个要改变的值,可以: ①在主调函数中设n个变量,用n个指针变量指向它们; ②然后将指针变量作实参,将这n个变量的地址传给所调用的函数的形参; ③通过形参指针变量,改变该n个变量的值; ④主调函数中就可以使用这些改变了值的变量。 函数的调用可以(而且只可以)得到一个返回值(即函数值),而运用指针变量作参数,可以得到多个变化了的值。 例:输入a、b、c这3个整数,按大小顺序输出 通过指针引用数组元素 按C的规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,而不是将p值(地址)简单地加1。 例如,数组元素是实型,每个元素占4个字节,则p+1意味着使p的值(地址)加4个字节,以使它指向下一元素。 p+1所代表的地址实际上是p+1×d,d是一个数组元素所占的字节数(对int型,d=2;对float、long型,d=4;对char型,d=1)。 注意指针变量的运算(先使指针变量p指向数组a) ① p++(或p+=1),使p指向下一元素,即a[1]。若再执行*p,取出下一个元素a[1]值。 ② *p++,由于++和*同优先级,结合方向为自右而左,因此它等价于*(p++)。作用是先得到p指向的变量的值(即*p),然后再使p+1=p。 例:上例中最后一个for语句: for(i=0;i<10;i++,p++) printf(%d,*p); 可以改写为 for(i=0;i<10;i++) printf(%d,*p++); ③ *(p++)与*(++p)作用不同。前者是先取*p值,后使p加1。后者是先使p加1,再取*p。若p初值为a(即a[0]),输出*(p++)时,得a[0]的值,而输出*(++p),则得到a[1]的值。 ④ (*p)++表示p所指向的元素值加1,即(a[0])++,如果a[0]=3,则(a[0])++的值为4。注意:是元素值加1,而不是指针值加1。 如果p当前指向a数组中第i个元素,则:*(p--)相当于先对p进行“*”运算,即a[i]的值,再使p自减。 *(++p)相当于a[++i],先使p自加,再作*运算。 *(--p)相当于a[--i],先使p自减,再作*运算。 将++和--运算符用于指针变量十分有效,可以使指针变量自动向前或向后移动,指向下一个或上一个数组元素。例如,想输出a数组100个元素,可以: p=a; p=a
您可能关注的文档
最近下载
- 慢性支气管炎慢性阻塞性肺疾病课件.pptx
- 纪念抗日战争胜利80周年弘扬抗战精神爱国主义教育ppt课件.pptx VIP
- 2025年河南省职教高考语文全真模拟卷(含答案) .pdf VIP
- 血管加压药物在急诊休克中的应用专家共识(2021)解读PPT课件.pptx VIP
- FRENIC-VP 用户手册(中文).pdf
- 济南版初中生物七年级上册复习.pdf VIP
- 《故事新编》(鲁迅)测试题带答案.pdf VIP
- 《航空发动机维修技术》——课件:航空发动机维修.pptx VIP
- 2022年职业教育国家级教学成果奖申报书《基于师范性和技术性融合的职技高师人才培养体系研究与实践》.pdf VIP
- 雅培血气分析仪的使用.ppt VIP
文档评论(0)