- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 指针、引用和动态空间管理
第6章 指针、引用和动态空间管理【内容提要】指针概述指针与数组指针与函数指针与字符串动态存储分配引用的概念及应用【重点与难点】6.1 指针概述指针变量用于存放一个对象在内存中的地址。通过指针变量可以间接访问对象。6.1.1指针变量的定义格式:存储类型 数据类型 *指针变量名;说明:①通常把指针指向的变量的数据类型称为指针的数据类型;指针变量的类型确定后只能指向这种既定的数据类型。而任何一个指针变量本身数据值的类型都是unsigned long int。②这里的“*”表示定义的是一个指针变量。6.1.2指针运算符 取地址运算符* 间接引用运算符在指针变量的定义和指针变量的引用中都有*p。但引用指针时的*p与定义指针变量时含义是不同, 在指针变量的定义中如int *p;是指p是一个指向整型的指针,而在引用时*p是指p所指向的变量。6.1.3指针运算指针的赋值运算当向指针变量赋值时,赋的值必须是地址常量或变量,不能是普通整数。指针赋值运算常见的有以下几种形式:把一个变量的地址赋予一个指向相同数据类型的指针;把一个指针的值赋予相同数据类型的另外一个指针;把数组的地址赋予指向相同数据类型的指针。指针的算术运算指针与整数的加减运算:指指针从当前指向位置向前或向后移动几个数据单元。由于指针可以指向不同数据类型,即数据长度不同的数据,所以这种运算的结果值取决于指针指向的数据类型。该运算通常用于对数组元素进行操作的场合。两个指针相减运算:指在两个指针指向的变量类型相同时相减的结果为两个指针所指的地址之间相隔的数据元素的个数。指针的关系运算在两个指向相同类型变量的指针之间可以进行各种关系运算,它实现对两个指针所指变量地址值的比较。6.1.4 const指针指向常量的指针格式:const 数据类型 *指针变量名;说明:在程序中不能通过指针来改变它所指向的数据的值,但是指针本身的值可以改变。指针常量格式:数据类型 * const 指针变量名=初始地址值;说明:指针本身的值不可改变,但它所指向的数据的值可以改变。指向常量的指针常量格式:const 数据类型 * const 指针变量名=初始地址值;说明:指针本身的值不可改变,它所指向的数据的值也不能通过指针改变。 6.2 指针与数组数组元素的访问在第四章中已经介绍了如何访问数组元素的简单方法,这里介绍访问数组元素的另两种方法。①地址法:一个数组名代表它的起始地址。地址法即通过地址访问某一数组元素。如定义 int a[5];则对数组的第i+1个元素的访问可以用a[i]或*(a+i)。对于二维数组如定义int b[2][3];则b[0],b[1]分别代表第一行和第二行的首地址。所以要访问数组元素b[i][j]可以用下列几种形式:*(*(b+i)+j)、*(b[i]+j)、*(b+i)[j]、*(b+3*i+j)。②指针法:通过指针访问某一数组元素。如定义一个指向数组元素的指针,int a[5],*p=a;,则对数组的第i+1个元素的访问可以用*(p+i)它等价于a[i]。对于二维数组如定义int b[2][3],*q=b[0];则访问数组元素b[i][j]可以用以下几种形式:*(*(q+i)+j)、*(q[i]+j)、*(q+i)[j]、*(q+3*i+j)、q[i][j]。数组指针与指针数组①数组指针格式:数据类型 (*指针名)[常量表达式]; 说明:数组指针是一个指向一维数组的指针变量。 ②指针数组格式:数据类型 *指针数组名[常量表达式];说明:数组元素为指针的数组,即数组中的每个元素为指向既定的数据类型的指针。6.3 指针与函数6.3.1 指针作为函数参数若指针作为某函数的参数,对该函数的调用即为传地址调用。6.3.2 指针型函数当一个函数的返回值是指针类型时,这个函数就是指针型函数。它的作用是当需要返回大量数据时可以通过指针型函数完成,当然这需要有效组织数据所占的内存空间。这种情况多用于返回数组、字符串等。定义指针函数的函数头的格式为:数据类型 *函数名(参数表)6.3.3 函数指针函数指针就是指向函数的指针。定义格式:数据类型 (*函数指针名)(参数表);说明:数据类型是指函数指针所指向函数的返回值的类型,参数表中指明该函数指针所指向函数的形参类型和个数。函数指针变量在使用前应该先给它赋值,格式为:函数指针名=函数名;当函数指针指向某函数以后,可以用下列形式调用函数:(*指针变量)(实参表列)函数指针数组定义格式:数据类型 (*函数指针名[常量表达式])(参数表);说明:函数指针数组中的每个元素是一个指向既定类型函数的指针。每个元素所指向的函数具有相同的数据类型和相同的参数类型和参数个数。6.4 指针与字符串可以定义一个字符指针,通过指针的指向来访问所需的字符。常用的字符串处理函数:当程序中使
文档评论(0)