- 1、本文档共162页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计基础 第七章 指针 本节提要 指针简介 指针变量 数组和指针 字符串和指针 函数和指针 7.1 指针简介 每个内存单元都有一个编号,根据该编号即可准确地找到内存单元,这个编号叫做“内存地址”。 通常也把“内存地址”称为指针。 直接访问和间接访问 对变量本身进行存取的方式,称为“直接访问”。 将变量的地址存放在某指针变量中,通过访问这个指针变量,达到访问该变量的方式,称为“间接访问”。 说明 所谓“指向”是通过地址来体现的。图中以箭头人为形象地表示这种“指向”关系。 实际上,指针只是存放了另一个变量空间的起始地址。 7.2 指针变量 指针变量定义的一般形式: 基类型 *指针变量名; 基类型用来指定该指针变量可以指向的变量的类型。 *表示这是一个指针变量。 int *p; 定义了一个整型指针变量p。 int是指针变量的“基类型”。 “*”表明所定义变量的身份是“指针”。 注意:指针变量是p,而不是*p。 int* p; int*表示整型指针类型,与int类型相对。 例如: int a; 定义整型变量a int* p; 定义整型指针变量p 指针变量空间的大小 指针变量用于存放地址,因此本身也具有存储空间。 C编译系统为不同基类型的指针变量,分配的存储空间的相等的。 在TC中,为2个字节。在VC++中是4个字节。 说明 定义一个指针变量而没有对其赋值,该指针是没有确定指向的。 要想使它有确定的指向,必须将某一同类型变量的地址赋给它。 STU s; STU *ptr; ptr=s; 与指针有关的运算符 取地址运算符 运算对象:普通变量 * 指针运算符(指向运算符、间接运算符) 运算对象:指针变量 7.2.3 指针运算 指针运算实质是地址运算。除了赋值运算外,还有: 指针与整数的加减运算 指针变量间相减运算 指针变量间关系运算 指针与整数的加减运算 指针变量加上或减去整数n,作用是让指针由当前所指向的位置向前或向后移动n个数据的位置。 总结 对指针p进行加减n后的实际地址为: p±n*sizeof(数据类型) 其中,sizeof(数据类型)为该指针数据类型的长度 指针的自增、自减运算 例如: char *p; p++; p--; int *p; *p++ *++p ++*p 指针变量间相减运算 一定条件下,两个指向同一种数据类型的指针可以相减。 数组的两个指针相减是地址之差再除以数组元素的类型长度。 注意:两个指针变量作加法运算是没有意义的。 指针变量间关系运算 同种数据类型的指针变量间关系运算表示它们所代表的地址之间的关系。 特别的,对于数组指针变量表示数组元素的位置比较。 7.2.4 指向指针的指针 指向指针型数据的指针变量,简称指向指针的指针。 定义形式: 类型标识符 **指针变量名; 注意:指针和指向它的指针,基类型要相同。 注意 二级指针与一级指针是两种不同类型的数据,不可互相赋值,尽管它们的值都是地址。 例7.3 多重指针举例 7.2.5 指针变量作函数参数 基本数据类型变量可以做函数参数 数组可以做函数参数 指针变量也可做函数的参数 7.3 数组和指针 数组元素的访问采用下标法。 a[0]、a[1]、a[2]... 利用一个指向数组的指针变量完成对数组元素的访问,其实质就是访问数组元素的地址。 7.3.1 一维数组的指针表示方法 数组名代表数组的起始地址,通常称为常量指针。 例如,int a[4]; 各元素地址:a+i 各元素值:*(a+i) i=0、1、2、3 p+i 同 a+i *(p+i) 同 *(a+i),即a[i] 指向数组的指针变量也可以带下标 p[i] *(p+i) a[i] 7.3.2 数组名和数组指针变量作函数参数 数组名作实参,实际上就是传送数组的首元素的地址。 形参必须也是指针(只有指针才能存放地址)。可以是指针变量,也可以是指针常量(形参数组)。 数组和指针作参数归纳 7.3.3 二维数组的指针表示方法 二维数组a[3][4],可以看成是以a[0]、a[1]、a[2]为起始地址的三个一维数组。 其中a[i]指向一个包含4个元素的一维数组。 a[0]是指向一个一维数组(二维数组的第0行)的常量指针,并且指向首元素,即a[0][0]。 a是指向指针的指针,也是一个常量指针,记录了整个二维数组首元素a[0][0]的地址。 a、a[0]、a[0][0] 7.3.4 指向数组的指针变量 指针变量也可以指向一个数组 基本类型 (*变量名)[长度]; 基本类型是数组元素的类型 [长度]是元素的个数 变量名是该指针 特别注意 float (*
您可能关注的文档
最近下载
- 竺乾威、 朱春奎、李瑞昌: 《公共管理导论》 第十一章 法治与监督.pptx VIP
- 大班科学《会跳舞的盐》教案.doc
- 《二次函数》PPT优秀课件.pptx VIP
- 人教版必修一高中生物《全册全套》课件.pptx
- [中央]2024年民政部所属事业单位招聘笔试历年典型考题及解题思路分析附带答案详解.docx VIP
- 竺乾威、朱春奎、李瑞昌:《公共管理导论》 第九章 公共部门绩效管理.pptx VIP
- 超星尔雅学习通《走进西方音乐》章节测试答案.pdf
- 竺乾威 、朱春奎、李瑞昌:《 公共管理导论 》第十章 公共危机管理.pptx VIP
- 如何进行整本书阅读ppt课件[文字可编辑].ppt
- 第17课 物联数据需采集 课件 义务教育版(2024)八年级全一册.pptx VIP
文档评论(0)