- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 灵活的指针 指针是C++中的重要概念,它使得C++可以再运行时取得对象的地址,并且可以通过这些地址操纵对象。正确运用指针可以有效地表示复杂的数据结构、可以用于数组和函数形参的控制、可以能动态分配内存还能够方便地使用字符串。掌握指针的使用可以使程序更加简洁和高效,可以很好的提升性能。当然指针也是一把双刃剑,正确的使用可以使程序高效,而错误使用则有可能使程序崩溃。为了更好的驾驭指针,我们有必要充分了解C++中指针的原理和用法,以便高效正确的使用指针。 8.1 什么是指针 指针是指向某种数据类型对象的复合数据类型,提供了对所指向对象的间接访问,其保存的是另一个对象的地址。在第4章第9节我们学习过针对容器的迭代器的概念,指针可以看做一种用于数组的迭代器,用于遍历数组,此外指针还可以指向单个对象。 要想弄清楚指针的工作原理,就要弄清楚指针和地址之间的关系。在程序中定义一个变量,当程序进行编译时就会给定义的变量分配内存单元,这个内存单元的大小由变量的数据类型决定。例如对有符号整型变量分配4个字节,对双精度浮点型变量分配8个字节等。在内存空间中每一个自己都有一个编号,这就是我们所说的地址,在地址所标识的内存空间中存放数据就相当于旅馆中相应的门牌号住相应的旅客一样。 8.2 指针的定义和初始化 在实际的编程过程中,指针的使用能够使编程更加的灵活,程序的执行效率会得到很大的提高,但是要想使用指针,就必须要先在程序中对指针进行定义,只有事先将指针定义好才能在程序中使用,在定义指针时可以对根据实际需要对指针进行初始化,在本节中将对此进行详细的讨论。 8.2.1 指针变量的定义 因为变量的指针就是变量的地址,所以存放变量地址的变量就是指针变量。在C++中所有的变量在使用之前必须进行定义,指定其类型并且按照类型分配内存存储单元,指针变量也不例外。C++中每个类型都有对应的指针类型。指针变量定义的一般形式如下: 基类型 *指针变量名; 例如下面是几个正确的指针变量的定义: int *pointer1; char *pointer2; float *pointer3; 8.2.2 获得地址并对指针变量进行初始化 指针变量可以在定义时进行初始化,也可以在定义后进行赋值,赋值或者初始化的值必须要是同类型对象的地址。需要注意的是一定要在使用指针变量之前对其进行初始化,因为使用未初始化的指针变量会导致程序运行出错,而且出错的原因很难发现。 int a=10; int b=20; int *pointer1=a; int *pointer2; pointer2=b; 8.2.3 指针变量的使用 通过指针变量可以间接操纵其所指向的对象,对指针进行解引用也可以访问其所指向的对象。是取地址运算符,用于取对象的地址;*是解引用运算符,用于取指针变量所指向的内容。 string str(“hello”); string *pointer=str; cout*pointer; 解引用运算符可以返回指针变量指向对象的左值,可以使用这个功能修改指针变量所指向对象的值,也可以修改指针变量本身,使指针变量指向另外一个新的对象。 8.2.3 指针变量的使用 8.2.4 指针与引用 指针和引用都可以间接访问一个值,但是它们之间是有区别的。区别之一在于引用总是指向某个对象,所以定义引用的时候没有进行初始化时错误的。区别之二在于赋值行为的差异,给引用进行赋值修改的是该引用所关联对象的值,而不是使引用与另外一个对象关联。应当注意的是引用一经初始化则始终指向同一个特定的对象。 8.3 指针的操作 指针值表示的是一个内存地址,所以其内部表示的是一个整数。指针变量所占的空间大小总是等于整型变量的大小。应当注意虽然整型变量和指针变量具有相同的数据表示和范围表示,但是两者的操作是不同的,所以必须明确指出整型变量和指针变量是两种不同的数据类型。 指针不服从整数类型数据的操作规则,两个指针值不能相加,两个指针值相减得到一个整型数,指针值加上或者减去一个整数得到的是另外一个指针值。指针值加减整数这种操作大多用在数组这种连续而且同类型元素的序列空间中。可以把数组的起始地址赋给一个指针,然后通过指针加减整数即移动指针来对数组元素进行操作。通常在指针上加上或者减去一个整型数值n等效于获得一个新指针,这个新指针指向指针原来指向元素之后或者之前的第n个元素。 8.4 指向指针的指针 指向指针的指针也称为二级指针,它指向的是指针型的数据。定义指向指针的指针变量的。格式为: 数据类型 **指针变量名称; 注意下图中的name是一个指针数组,其每一个元素是一个指针类型数据,其值为地址。name是一个数组,它的每一个元素都有相应的地址,数组名name代表该指针数组首元素的地址。n
有哪些信誉好的足球投注网站
文档评论(0)