- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 地址和指针 7.1 地址和指针的概念 7.2 指针变量的定义和指针变量的基类型 7.3 给指针变量赋值 7.4 对指针变量的操作 7.5 指针在函数方面的应用 7.1 地址和指针的概念 7.1.1 地址和指针的概念 1.“地址”的概念 2.存储单元“地址”的表示 3.“指针”的概念 7.1.2 为什么使用指针 使用指针,实现了“间接访问”变量,这只是一个过程,其实质是可以达到方便地引用数组,提高计算机的运行效率,调用函数时可以修改或返回多个参数值,还可以描述更复杂的数据结构,……为了加深读者对指针重要性的理解,下面我们举一函数调用的实例。 例7.1 欲想调用fun函数,计算出两个数相加和相减的值,然后在main函数中显示结果。 程序如下: fun ( int x , int y ) { int add=0 , sub=0 ; add=x+y ; sub=x–y ; } main ( ) { int a , b , add=0 , sub=0 ; scanf ( %d %d , a , b ) ; printf ( a=%d , b=%d \n , a , b ) ; fun ( a , b ) ; printf ( %d + %d =%d \n , a , b , add ) ; printf ( %d – %d =%d \n , a , b , sub ) ; } 假设程序运行时给变量a输入8,给变量b输入5,程序运行结果: a=8 , b=5 8 + 5=0 8 – 5=0 程序运行结果与我们“想象”的不一致,为什么呢?其原因是fun 函数中变量add和sub与main函数中变量add和sub各自占用自己的存储单元,因此fun函数中变量add存放的两个数的求和值无法传回到main函数的变量add中,同理,fun函数中变量sub存放的两个数的相减值也无法传回到main函数的变量中。下面我们修改一下源程序,借助指针,将fun函数中运行的结果传回到main函数中。 7.2 指针变量的定义和指针变量的基类型 7.2.1 指针变量的定义和指针变量的基类型 定义指针变量的一般形式如下: 类型名 *指针变量名1,*指针变量名2,……; 例如:int *pi , *pj ; 以上定义语句中,pi和pj都是用户标识符,表示具体的变量名,现在每个变量名前加一星号“*”说明符,用来说明所定义的变量是指针变量。 注意:变量名前的星号“*”不可省略,若省略了星号“*”说明符,就变成了普通整型变量。 int是数据类型名,在这里,说明了pi和pj是两个指向整型(int类型)变量的指针,也就是说变量pi和pj中只能存放int类型变量的地址,这时我们称int是指针变量pi和pj的基类型。又如: double *pd ; char *s1 , *s2 ; 在这里定义了三个指针变量pd、s1和s2,其中指针变量pd的基类型为double类型,在指针变量pd中,只能存放double类型变量的地址,指针变量s1和s2的基类型为char类型,在指针变量s1和s2中只能存放char类型变量的地址。又如: int **p ; 以上是定义了一个指向指针的指针变量p,该指针变量p只能存放基类型为int类型的指针变量的地址。又如: int *pi , **p , k ; 以上语句是在同一语句中,同时定义了指针变量pi、指向指针的指针变量p和变量k,这是允许的。 7.2.2 指针变量的基类型的作用 任何一个指针变量都是用于存放它所指向变量的地址,只要能存放地址就可以了,为何还要区别不同的基类型呢? 其原理是:不同的数据类型变量,C语言系统为它们开辟的存储空间的字节数是不同的, int类型的数据存储空间是2个字节,float类型的数据存储空间是4个字节,……,系统表示每一个存储空间的地址时,是取该存储空间的第1个字节的地址作为该变量存储空间的地址。那么当一个基类型为int类型的指针变量p指向了一个int类型的变量a时,是将该变量a所占的2个字节的存储空间中的第1个字节存储空间的“地址”存入指针变量p中,如图7-2(b)所示。 所以根据指针变量p中存放的“地址”,只能寻找到变量a第1个字节的存储空间,如果只提取变量a所占存储空间第1个字节的数据,显而易见不是int类型变量a的原值,因为变量a的原值是通过2个字节来存储的数据。此时我们可以通过指针变量p的基类型解决问题,知道了变量a的第1个字节的地址,再根据指针变量p的基类型为int类型,系统就将从变量a的第1个字节所在的地址开始,连续提取2个字节中的数据,此时的数据就是int类型变量a的原值。 同理,基类型为float类型的指针变量
您可能关注的文档
- (新课标)高中数学《2.2.1双曲线及其标准方程》课件 新人教A版选修1-1.ppt
- (新改)考前作文备考指导.ppt
- CIS作业展示第六组.ppt
- (新课程)高中数学二轮复习精选《必考问题18统计及其与概率的交汇问题》课件新人教版.ppt
- cp07小学儿童的心理发展-品德.ppt
- CPU的逻辑结构与原理.ppt
- (水电)产业调查报告.ppt
- (李)笑看挫折_主题班会课件.ppt
- CUG2014届就业政策交流会.ppt
- CR-一般进出口货物的通关制度及其操作流程.ppt
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
最近下载
- 国家通用语言文字赋能民族地区乡村振兴路径——以劳动就业权保障为视角.pdf VIP
- 福建省龙岩市2024-2025学年高一上学期期末地理试题(含答案).pdf VIP
- 净身出户的离婚协议书必威体育精装版的范文7篇.docx
- 民族地区国家通用语言文字的推广普及路径优化研究-来源:发展教育学(第2022003期)-世界科学出版有限公司.pdf VIP
- 光储充一体化超级充电站项目可行性研究报告模板-备案拿地.doc
- 电气事故案例集锦.doc
- 部编版三年级下册语文教材解读.pptx VIP
- 大学物理电子教案-波动光学.doc
- 2024届辽宁省名校联盟高三一模模拟(调研卷)物理试题(四)(含答案.pdf VIP
- 二年级下册《道德与法治》教材分析.pdf VIP
文档评论(0)