- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cpp_02 引用
int a = 10, b = 20; int ra = a; // 将引用ra与a绑定,指同一变量 ra = b; // 将导致b的值赋值给a // 之后 a 的值为 20 printf(“0x%x\n”, ra); printf(“0x%x\n”, a); //尝试: int ref; //error 没有初始化,未绑定任何变量 double rd = 2; //error 非常引用绑定常量 void a=3; //error void类型引用 int a[10];int ra[10]=a; //error 不能建立引用的数组,数组不是一个名副其实的数据类型 由于指针也是变量,所以可以有指针变量的引用 指针也是变量,所以可以有指针变量的引用: int a = 10, b = 20; swap(a, b);//int rx = a, int ry = b; “传参数”时,其实并不是传值,而是做绑定操作,之后在函数内部,rx与变量a指的是同一块内存(或说同一个变量),ry与变量y指的是同一块内存. 函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本,所以提高了效率 函数返回引用(一般用于对外返回本模块所管理的数据,多用于运算符的重载),string类型的[]运算符即是一个例子: string str = “Hello”; str[0] = ‘A’; //char operator[](int index) 返回值和返回引用的内存对比 注意: 如果返回不在作用域范围内的变量或对象的引用那就有问题了。这与返回一个局部作用域指针的性质一样严重 float fn(){ static float area = 0; return area; //不可以返回局部变量的引用 } //但是可以返回静态局部变量的引用 int main(int argc, char *argv[]){ fn() = 100.0 //相当于 area = 100.0 cout fn(); return 0; } 返回结构的引用 一个函数可以返回一个结构的引用和结构的指针 不要返回一个局部结构变量的引用和指针 传递指针和引用更大的目的是效率 传递的地址特征使得所传的参数处于随时被修改的危险之中 保护实参不被修改的办法是传递const指针和引用 引用总是const的:如果对引用应用关键词const,其作用就是使目标成为const变量 引用 变量的别名或同义词 声明方式:类型 引用名称 = 变量 int a; int ref = a; 从此 ref 即指代 a,它们指向同一块内存 引用不是变量, 不分配内存空间 声明时必须初始化(与一个实际变量绑定),并且一旦绑定,从一而终. 引用能使用任何合法变量名 引用 int*a: int*&P=a://表示int*的引用P初始化为a int b=8; P=b://0k,P是a的别名,是一个指针 0110:F14E 0110:F890 a(p) 8 b 0110:F14E 引用 引用和函数 在C++中常以引用做参数的形参 传递引用给函数与传递指针的效果一样,实际上也是地址传递 用引用作为参数比使用指针要容易理解,直观 void swap(int rx, int ry) { int temp; //函数内部的x,y temp = rx; //指代实参本身 rx = ry; //在函数内部修改了实参的值 ry=temp; } 引用和函数 引用和函数 还可以利用引用作为函数参数,返回多个值. 用引用给函数传递两个参数,然后由函数往目标中填入正确的值. 如swap(int rx, int ry)引用既用来向函数传递信息,也用于向外界返回信息. int temp; float fn2(float r) // 返回引用{ temp = r*r*3.14; return temp;} 利用引用返回值 返回数值 返回引用 利用引用返回值 float fn2(float r){ float temp; temp=r*r*3.14; return temp;//返回局部变量的引用}void main() { float d=fn2(5.0); //error返回的引用是个局部变量} 利用引用返回值 函数中引用要注意 PersonGetPerson( ) { Person p; cin.get(p.name); cout “Please
文档评论(0)