- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C基础第十章指针与引用
1-* 第十章 指针与引用 课程内容安排 指针的概念。 指针的运算。 指向数组的指针。 指向字符串的指针。 引用的定义和使用。 指针与引用的区别和应用。 指针的基本概念 简单的说,指针是一个地址,其指向存储某一个数据的存储地址。此外,还有一个指针变量的概念,指针变量是一种特殊性质的变量。指针变量是把地址存放在一个变量中,然后通过先找出地址变量中的值(一个地址),再由此地址找到最终要访问的变量的方法,这就是指针变量及其访问方法,而地址变量就是指针。 定义指针变量 前面内容提到了,指针是一种复合型的数据类型。与其他基本数据类型一样,使用指针之前也必须先定义指针变量。在C++中,定义指针变量的一般形式如下所示。 类型标识符 * 指针名; 其中,“*”表示这是一个指针变量;变量名为定义的指针变量名;类型标识符表示本指针变量指向数据的类型。例如,下面语句定义了一个指针变量 int * p; 上述语句表示p是一个指针变量,其值为某个整型变量的地址,或者说p指向一个整型变量。至于到底指向哪一个整型变量,可以通过将某个变量的地址值赋给指针p来决定。 初始化指针 定义了一个指针后,在使用此指针前,必须首先给它赋一个合法的值。否则,程序中对指针的使用就有可能导致系统崩溃。C++中,读者可以在定义指针的同时通过初始化来给指针赋值,也可以在使用之前给指针赋值。一般来说,C++中在定义指针的同时初始化指针的形式如下所示。 数据类型 *指针名=初始地址值; 例如,下面语句将变量a的内存地址作为初始值赋予整型数据类型int型指针p,也即在定义指针p的同时为其初始化,初值为变量a的内存地址,其语句如下。 int a,*p=a; 读者可以看出,上述语句同时定义了整型变量a和指针变量p,并为指针变量p初始化为a的地址。 指针的访问 C++中,为了取得一个变量的地址,引入了取地址运算符,使用取地址运算符“”来取得一个变量的地址,其语法如下所示: 变量名; 例如,表达式“x”表示变量x的地址,“y”表示变量y的地址,但这个变量必须是已经存在的变量。此外,取地址运算符“”只能应用于内存中存在的数据,如变量、数组元素等等,而不能用于表达式、常数或者是寄存器变量。 在C++中,*运算符为取值运算符,也称为指针运算符,或指向运算符,也称间接运算符,*p代表p所指向的变量。 指针的算术运算 指针变量也有加减运算,指针可以加减某个整型数,指针与指针可以相减。但指针与指针相加是没有意义的,指针的乘除也没有意义。指针的值是一个内存地址,而一个内存地址可以用一个整型数表示。因此,指针的算术运算可以看作是整型数间的一个运算。 在C++中,两个指针之间的关系运算表示它们指向的内存地址位置之间的关系,例如,下面语句定义指针p和q并分别进行初始化。 int a; int *p=a,*q=p; 若上面声明的两个指针作p==q运算,其结果为1(true),即指针p、q指向同一个变量。读者需要注意,两指针相等的概念是两指针指向同一位置。因此,假设数据在内存中的存储逻辑是由前向后,那么指向后方的指针大于指向前方的指针。 指针的关系运算 用指针指向数组其实就是让指针指向这段连续内存的首地址,也就是数组中第一个元素(下标为0)的地址。定义一个指向数组的指针变量同定义普通指针没有什么不同,即定义一个跟数组元素类型相同的指针即可。 由于数组是一段连续的内存,指针可以指向数组,而且可以通过加减整数来移动指针。所以,可以通过指针来访问数组,即数组中的元素。指针指向数组的首地址,进而可以移动指针到指定的元素。也可以一次只增加1,从而达到遍历整个数组的目的。 指向数组的指针 事实上,指向字符串的指针就是一个char类型的指针。与普通指针一样,字符串指针在使用前也必须先定义。例如,下面语句定义了一个字符串str,并定义了一个指向该字符串的指针p,并为该指针进行初始化。 char str[] =”Hello World”; // 定义一个字符串 char * p = str; // 定义一个字符指针,并初始化为字符串的首地址 上述语句中str为字符串的首地址,“Hello World”为该字符串的值。 指向字符串的指针 引用 在C++中,引用也是一种数据类型。不过,引用不能独立存在,而只能依附于一个变量。所以定义一个引用,必须要指明是哪个变量的引用。定义一个引用包括目标变量的数据类型、引用修饰符“”、引用的标识符以及目标变量的标识符。其语法如下所示: 类型标识符 引用名 = 目标变量名; 其中,类型标识符是目标变量的类型;“”是引用修饰符,表示定义的是一个引用;而被引用的变量则通过赋值运算符指定。 引用与指针 与传统的C语言相比,引用是C++特有的新类型。在很多
文档评论(0)