- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计 第三章 指针和引用 3.1 指针 3.2 引用 3.3 指针和引用的区别 3.4 指向数组的指针 3.5 结构 3.1 指针 在C++语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。 一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。 通常把指针变量简称为指针,但指针变量和指针的意义是不一样的。 指针不能被初始化或赋值为其它类型对象的地址值。例如,已知如下定义: double dval; double *pd=dval; 那么,下面两条语句都会引起编译时刻错误: pi=pd; //无效的类型赋值:int *=double * pi=dval; 3.1.2 指针的运算 (1)取地址运算符 取地址运算符是单目运算符,其结合性为自右至左,其功能是取变量的地址。前面介绍指针变量赋值中,我们已经了解并使用了运算符。 (2)取内容运算符* 取内容运算符*是单目运算符,其结合性为自右至左,用来表示取指针变量所指的变量的内容。 注意:指针运算符*和指针变量说明中的指针说明符*?不是一回事。在指针变量说明中,“*”是类型说明符,而表达式中出现的“*”则是一个运算符,用以表示取指针变量所指的变量的内容。 void main(){ int a=5,*p=a; cout*p; } 指针变量的运算 (1)赋值运算 ①指针变量初始化赋值。 ②把一个变量的地址赋予指向相同数据类型的指针变量。例如: int?a,*pa; pa=a;? ③把一个指针变量的值赋予指向相同类型变量的另一个指针变量。例如: int?a,*pa=a,*pb; pb=pa;?//把a的地址赋予指针变量pb ④把数组的首地址赋予指向数组的指针变量。例如:? int?a[5],*pa; pa=a;?//数组名表示数组的首地址,故可赋予指向数组的指针变量pa ⑤把字符串的首地址赋予指向字符类型的指针变量。例如: char?*pc; pc=C?language;或用初始化赋值的方法写为:char?*pc=C?Language; ⑥把函数的入口地址赋予指向函数的指针变量。例如: int?(*pf)(); pf=f;?//f为函数名 (2)地址加减算术运算 对于指向数组的指针变量,可以加上或减去一个整数n。设pa是指向数组a的指针变量,则pa+n,pa-n,pa++,++pa,pa--,--pa?运算都是合法的。指针变量加或减一个整数n的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。应该注意,数组指针变量向前或向后移动一个位置和地址加1或减1?在概念上是不同的。因为数组可以有不同的类型,?各种类型的数组元素所占的字节长度是不同的。如指针变量加1,即向后移动1?个位置表示指针变量指向下一个数据元素的首地址。而不是在原地址基础上加1。 例3.1 #include iostream.h void main() { int a=10,b=20,s,t,*pa,*pb; pa=a; pb=b; s=*pa+*pb; t=*pa**pb; couts=sendlt=tendl; } 3.1.3指针的应用及注意的问题 指针的应用——传递参数 例3.3 # include iostream.h void example(int *a1,int b1,int c1) { *a1*=3;//等价于 *a1=*a1*3 ++b1; ++c1; } void main() { int b,c,d=6; int *a=d; b=7; c=10; example(a,b,c);//分别是传址,引用和传值调用 cout *a=*aendl; cout b=bendl; cout c=cendl; } 3.2 引用 引用(reference)又称别名(alias),它可以用作对象的另一个名字。通过引用我们可以间接的操纵对象,使用方式类似于指针,但是不需要指针的语法。在实际应用中,引用主要被用作函数的形式参数。 例: int ival=1024; int refval=ival; //refval是一个指向ival的引用 int refval2; //错误:引用必须被初始化为指向一个对象 虽然引用也可以被用作一种指针,但是相对指针那样用一个对象的地址来初始化引用却是错误的。 int ival=1024; int refv
您可能关注的文档
- 山东农业大学计算机网络课件CH9 无线网络.ppt
- 山东农业大学计算机网络课件CH10 下一代因特网.ppt
- 山东农业大学精品课程《英美文学史》课件:part one.ppt
- 山东农业大学精品课程《英美文学史》课件:part three.ppt
- 山东农业大学精品课程《英美文学史》课件:part two.ppt
- 山东农业大学精品课程《英美文学史》课件:unit 1.ppt
- 山东农业大学精品课程《英美文学史》课件:unit 2.ppt
- 山东农业大学精品课程《英美文学史》课件:unit 3.ppt
- 山东农业大学精品课程《英美文学史》课件:unit 5.ppt
- 山东农业大学精品课程《英美文学史》课件:unit 6.ppt
有哪些信誉好的足球投注网站
文档评论(0)