`

c++引用 改变外部值

 
阅读更多

先看一段程序:

// PassReference.cpp

#include<iostream>

using namespace std

void f(int& r){

cout<<"r="<<r<<endl;

cout<<"&r="<<&r<<endl;

r=5;

cout<<"r="<<r<<endl;

}

int main(){
int x=47;

cout<<"x="<<x<<endl;

cout<<"&x="<<&x<<endl;

f(x);

cout<<"x="<<x<<endl;

}

生成的结果如下:

从结果中可以看到, 尤其是最后一行,我们可以得到x值已经得到了改变,所以从中知道,当引用当做函数的参数时候,其效果和指针的效果是一样的,既引用传递允许一个函数去修改外部对象,就像传递一个指针所做的那样。

分享到:
评论

相关推荐

    深入理解C++11:C++11新特性解析与应用

    《深入理解C++11:C++11新特性解析与应用》免责声明序前言第1章 新标准的诞生 11.1 曙光:C++11标准的诞生 11.1.1 C++11/C++0x(以及C11/C1x)—新标准诞生 11.1.2 什么是C++11/C++0x 21.1.3 新C++语言的设计目标 ...

    新手学习C++入门资料

    输入和输出是通过C++类来实现的,cin和cout是这些类的实例,他们是在C++语言的外部实现。 在C++语言中,有了一种新的注释方法,就是‘//’,在该行//后的所有说明都被编译器认为是注释,这种注释不能换行。C++中...

    高质量C++.doc

    以下是“指针传递”的示例程序。由于Func2函数体内的x是指向外部变量n的指针,改变该指针的内容将导致n的值改变,所以...由于Func3函数体内的x是外部变量n的引用,x和n是同一个东西,改变x等于改变n,所以n的值成为10。

    Go语言到底有没有引用传参(对比 C++ )

    最常见的一种传参方式,函数的形参是实参的拷贝,函数中改变形参不会影响到函数外部的形参。一般是函数内部修改参数而又不希望影响到调用者的时候会采用值传递。 指针传递 形参是指向实参地址的一个指针,顾名思义,...

    C++复习资料之系列

    (c) *p表示变量i的值 (d) p的值是变量i的地址 15.执行语句 int a = 5,b = 10,c;int *p1 = &a, *p2 = &b; 后,下面不正确的赋值语句是( b )。 (a) *p2 = b; (b) p1 = a; (c) p2 = p1; (d) c = *p1 *...

    摩托罗拉C++面试题

    不存在空引用,并且引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用,显得很安全。 const 指针仍然存在空指针,并且有可能产生野指针. 总的来说:引用既具有指针的效率,又具有变量使用的方便性...

    C程序设计 第四版 谭浩强 高清扫描版 带完整书签目录 加 学习辅导

    第3部分是上机指南,详细介绍了Visual C++ 6.0集成环境下编辑、编译、调试和运行程序的方法; 第4部分是上机实验指导,包括程序的调试与测试、实验的目的与要求,并提供了本课程12个实验。 《C程序设计(第四版)》...

    java经典面试题汇总

    Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 ...

    新概念C语言.李一波(带详细书签).pdf

    11.4.2 通过传送地址值,在被调用函数中直接改变调用函数中变量的值 96 11.4.3 函数返回地址值 97 11.5 动态存储分配 98 11.6 链表的建立及基本操作 100 11.6.1 结构体中含有可以指向本结构体的指针成员 100 ...

    C程序设计(第四版)学习辅导【谭浩强】

    5.7改变循环执行的状态126 5.7.1用break语句提前终止循环127 5.7.2用continue语句提前结束本次循环128 5.7.3break语句和continue语句的区别129 5.8循环程序举例132 习题141 第6章利用数组处理批量数据143 6.1怎样...

    FMLDATA的源码

    第一个参数X是个序列(指标),可以是CLOSE、OPEN等,也可以是公式中的中间计算结果,要求序列值在浮点型值范围之内,一般在正负20亿之间,如果不在该范围之内,建议改变单位;第二个参数N是个数值,表示序列编号,...

    JAVA面试题最全集

    将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally?再异常处理时...

    语言程序设计课后习题答案

    2-5 请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。 解: const float PI = 3.1416; float a = PI; 2-6 在下面的枚举类型中,Blue的值是多少? enum COLOR { WHITE, BLACK = ...

    CnWizards V0.9.0.470

    * IDE 外部专家管理工具 * 源码模块关系分析工具 CnWizards 以与开源协议兼容的 CnPack 协议发布,因而是开源、免费的。 任何个人或商业团体可以免费使用 CnWizards,无需支付任何费用。 ======================...

    你必须知道的495个C语言问题.pdf

    5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更好吗? 5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 5.12 我用预处理宏#define Nullptr(type)(type *)0帮助创建...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

    C语言精典版本C程序设计语言

    我们广泛地使用了Bjarne Stroustrup的C++的翻译程序来部分测试我们的程序。Dave Kristol为我们提供了一个ANSI C编译器进行最终测试。Rich Drechsler帮助我们进行了排版。诚挚地感谢每一个人。 Brian W. Kernighan ...

    一些C面试题,希望能对大家有帮助

    2) 引用初始化以后不能被改变,指针可以改变所指的对象。 2) 不存在指向空值的引用,但是存在指向空值的指针。 8. 描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性 9. 全局变量和局部变量在...

    java 面试题 总结

    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符...

Global site tag (gtag.js) - Google Analytics