首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++C++ 引用

文章目录 一、引用的概念 二、引用的特性 三、常引用 四、引用的使用场景 1、引用做参数 2、引用做返回值 五、性能比较 1、传值、传引用性能比较 2、值和引用作为返回值的性能比较 六、引用和指针的区别...引用的符号和我们C语言中取地址的符号一样,为 &;在某类型名的后面加上引用符号 (&) 就变为了引用类型。设计引用的目的是简化指针的使用,但是引用不能代替指针 (实际上引用的底层是用指针实现的)。...对常量的引用: void TestConstRef() { int& ra = 10; const int& rra = 10; } 在C语言的学习中,我们知道可以用一个变量的地址对指针进行初始化...1、减少空间浪费,提高程序效率:在C语言中我们学习到,形参是实参的一份临时拷贝,那么既然是拷贝,就会有时间和空间上的开销;而引用是实参的别名,相当于我们直接对实参进行操作,没有数据拷贝的过程。...;实际上在C++中,一般非输出型参数都是常引用参数。

1.4K00

C++C++ 引用详解 ⑦ ( 指针的引用 )

语言中 , 数组名本质上是指向数组第一个元素的指针 , 传递多维数组到函数中通常需要传递一个指向指针的指针 , 即二级指针 ; 借助二级指针 , 函数可以修改原始数组的行指针 ; void process2DArray...; N 级指针的 引用 , 调用时可以直接当做 N 级指针 使用 , 可实现的功能 相当于 N + 1 级指针 ; 在 C++ 语言 中 , 使用 引用 时 , C++ 编译器 会自动将 引用 翻译为...一级指针 使用 , 自动 在 一级指针 变量 旁边加上 取地址符号 & 和 取值符号 * ; 指针的引用 就相当于 二级指针 , 其 实现的效果 , 等同于 二级指针 ; C++ 编译器 遇到 指针的引用...; 引用 实际上是 把 间接赋值 的三个条件的后两个条件进行了合并 , C++ 编译器遇到引用 , 还是需要将 引用 还原为 C 语言中的 取地址 传入函数 , 在函数内部使用指针访问实参 ; 3、代码示例...- 指针的引用 该 函数 的 参数 是 一级指针的引用 , 使用该参数时 可以当做 一级指针使用 , 其效果 等同于 二级指针 ; 其效果等同于上一篇博客 【C++C++ 引用详解 ⑥ ( 普通变量

35920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++C++ 引用详解 ⑩ ( 常量引用案例 )

    C++ 语言中 , 常量引用引用类型 的一种 ; 借助 常量引用 , 可以将一个变量引用 作为实参 传递给一个函数形参 , 同时保证该值不会在函数内部被修改 ; 这样既保证了参数传递效率 ,...========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== 正确代码示例 : // 包含 C++ 头文件 #include "iostream" //...使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std; // 导入 C 头文件 #include // 常量引用作为函数参数...: // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std; /.../ 导入 C 头文件 #include // 定义一个结构体类型, 之后使用该类型的常量引用进行测试 struct Student { char name[64]; int age

    25030

    引用 C C++

    引用 引用是一个别名,它的作用就是作为目标的别名而使用,对这个引用的改动,就是对目标的改动。...定义 例如引用一个整型变量: int a=666; int &ra=a; 引用运算符&与地址操作符使用相同的符号,虽然它们显然是彼此相关的,但它们又是不一样的。...和指针类似,下面的引用定义是等价的: int& ra=a; int &ra=a; int & ra=a; 引用必须在定义的时候就进行初始化。而且必须在申明引用之前其引用的目标已经有申明或定义。...引用是不占内存空间的,它就是一个别名而已。 不能引用数组。 那它有什么用处呢? 应用 经常用来传递函数参数。 我们说如果要写一个函数交换两个变量的值,首先可以用指针,此外就是用我们的引用。...int a=1,b=2; swap(a,b); printf("%d %d",a,b); } 另外,因为函数只能返回一个值,所以如果想函数返回多个值的话,一种方法就是返回一个结构体,还有就是用引用传递参数

    10930

    C++C++入门—— 引用

    1 前情提要 在C语言中,我们往往会遇见复杂的指针(如数据结构之中的二级指针),理解起来比较复杂,C++对此加入了引用的概念。 指针和引用的大部分功能类似,是重叠的。...C++引用可以在较为复杂的情况下进行一定替换,让代码变得更加简洁 但是不能完全替代指针!!! 2 概念剖析 C++中提出了一个新概念:引用 引用为对象起一个别名 ,与对象使用同一内存空间。...5 使用场景 5.1做参数 我们回想一下C语言的交换函数: void swap(int* pa ,int* pb){ int tmp = *pa; *pa = *pb; *pb = tmp;...return; } int main(){ int a = 2 ; int b = 8 ; swap(&a,&b); return 0; } 而再C++中我们不再需要使用指针 void swap...return n; } 来看一段错误使用样例: int& Add(int a, int b) { int c = a + b; return c; } int main() { int& ret

    13310

    C++引用

    文章目录 1.引用概念 2.引用特性 3.使用场景 4.值和引用作为返回值类型 5.传值、传引用做参数 6.常引用 7.引用和指针的区别 总结 1.引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名...对于引用的概念还是比较好理解的。引用的基本用法: 类型& 引用变量名(对象名) = 引用实体; 我们不妨来举个例子: 如何去应用我们的引用呢?...,接着往后面走下去 ---- 2.引用特性 引用在定义时必须初始化 一个变量可以有多个引用 引用一旦引用一个实体,再不能引用其他实体 我们来看第一个引用的特性,引用在定义时必须要初始化,如果没有初始化...对于引用的特性而言,我们还是能够很好去理解的。 ---- 对于C++指针和引用而言,是相辅相成的。...,指针需要显式解引用引用编译器自己处理 引用比指针使用起来相对更安全 ,因为没有NULL引用

    56720

    C++引用

    C++重点——引用 定义 特性 常引用 使用场景 做参数 做返回值 传值、传引用效率比较 引用和指针的区别 定义 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间...比如说,你叫A,你的家人给你起小名叫B,你的兄弟姐妹叫你C,恋人叫你D。 其实这些名字都是你自己本人,只不过是不同的称呼而已。...注意:引用类型必须和引用实体是同种类型的。 特性 引用在定义时必须初始化 一个变量可以有多个引用 引用一旦引用一个实体,再不能引用其他实体 这里编译器报错说没有初始化。...a也可以被改变,是不可以的 int& b = 10;//同上,10是一个不可被修改的常量 const int& c = 10;//这样c就是常量了 int x = 10;//这里的x可以更改 const...有多级指针,但是没有多级引用。 访问实体方式不同,指针需要显式解引用引用编译器自己处理。 引用比指针使用起来相对更安全。

    32400

    c++ 引用

    目录 2.1引用的基本使用 引用的基本语法 2.2引用注意事项 1,引用必须要初始化 2,引用一旦初始化后,就不可以更改了 2.3 引用作函数的参数 1,值传递 2,地址传递 3,引用传递 2.4引用做函数返回值...1,不要返回局部变量的引用 2,函数的调用可以作为左值 2.5引用的本质 2.6常量引用 ---- 2.1引用的基本使用 引用的基本语法 例:  int &a=b;   2.2引用注意事项 1...,引用必须要初始化 也就是给一个值. 2,引用一旦初始化后,就不可以更改了 不能把别名换成另一个的别名 2.3 引用作函数的参数 1,值传递 其中a和b的值并没有改变....前面的两个形参改变了值. 2,地址传递 3,引用传递 引用传递和地址传递的效果一样 2.4引用做函数返回值 1,不要返回局部变量的引用 不要返回局部变量的引用 2,函数的调用可以作为左值...2.6常量引用 const后无法修改实参

    34760

    C++ 语言引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

    引用概念 II . 引用声明 III . 引用 地址 内存 分析 IV . 常引用 V . 引用作为参数 VI . 引用 与 指针 对比 I ....引用概念 ---- C++C 扩充 : 引用 ( Reference ) 概念 , 是 C++C 的基础上进行的扩充 , 在 C 语言中是没有引用的 ; 引用本质 : 引用的本质就是为一个变量指定一个别名...常引用 ---- 常引用 : ① 常引用简介 : 引用本身是一个常量指针 , 指针本身的地址不可改变 , 常引用 在常量指针的基础上 , 将指向的数据也设置成常量 , 即不能通过该引用修改变量的值 ;...引用作为参数 ---- C 语言中的参数 分类 : ① 普通变量参数 : C 语言中 普通变量 ( 非指针变量 ) 作为参数 , 只能进行值传递 , 不能通过参数返回结果 ; ② 指针变量参数 : C...语言中 , 如果要让函数的参数可以将结果返回 , 则必须使用指针作为参数 ; C++ 中的引用参数 : C++C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数的情况 ,

    1.2K10

    C++初阶】引用

    二.引用特性 1.引用类型必须和引用实体是同种类型的; 2.引用在定义时必须初始化; 3....一个变量可以有多个引用; 4.引用只能有一个实体,它和指针不同,指针能够改变指向,而引用不能。....做输出型参数(输出型参数就是形参的改变会改变实参,输入型参数相反); 2.减少拷贝,提高效率(在遇到大对象,或者是要深拷贝时宜用); 举一个典型的例子,C语言阶段我们都写过交换函数,当时是用的指针实现...四.引用和指针的区别 在C++引用可已用来代替指针实现一些功能,但C++并没用完全抛弃指针,有的功能就必须要用指针,所以C++引用不能完全代替指针; 实际上,引用的底层使用指针实现的,所以实际上引用是开空间的...引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小; 7. 有多级指针,但是没有多级引用; 8. 访问实体方式不同,指针需要显式解引用引用编译器自己处理; 9.

    10610

    C++C++ 引用详解 ⑧ ( 普通引用与常量引用 | 常量引用概念与语法 )

    一、普通引用 1、概念说明 之前的 【C++C++ 引用详解 ① ~ ⑦ 博客中 , 讲解的都是 普通引用 , 也就是 将 普通变量 赋值给 引用 , 过程如下 : 先定义 普通变量 a , 然后定义...普通引用代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace...: error C3892: “b”: 不能给常量赋值 2、常量引用概念与语法 在 C++ 语言中 , " 常量引用 " , 英文名称为 Const Reference , 是一种引用类型 , 另外一种引用就是...常量引用 b 修改 变量 a 的值 , 则会报错 : error C3892: “b”: 不能给常量赋值 错误代码示例 : // 包含 C++ 头文件 #include "iostream" //...d\n", b); // 修改 常量引用 b 的值 // 报错 : error C3892: “b”: 不能给常量赋值 b = 20; // 控制台暂停 , 按任意键继续向后执行 system

    30710

    C++引用

    C++引用的学习: 通常引用第一个作用,人们会想到的是引用的变量的别名;(可以说是直接操作这个变量); 引用的声明: Type + & + name(可以认为是一个常指针) 注意:(1)&是起标识符的作用...2个分号结束时就会指向不明确的内存区; main() {   int c = 10; int a = fun3(c); int &b = fun3(c); } /* 运行结果为...a = 10; b = 10; */ 这时的引用是因为内存在程序结束之前不会被释放掉; 常引用:   常引用声明方式:const 类型标识符 &引用名=目标变量名;   用这种方式声明的引用...,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。   ...& s);   那么下面的表达式将是非法的:   bar(foo( ));   bar("hello world"); 原因在于foo( )和"hello world"串都会产生一个临时对象,而在C+

    93540

    C++引用详解

    0; } 引用一旦引用一个实体,再不能引用其他实体 int a = 10; int& ra = a; int b = 10; //引用一旦引用一个实体,再不能引用其他实体...ra = b;//这是赋值 &ra = b;//左边是取地址,是错误的 常引用C++中,常引用是指在声明引用时使用const关键字来限制被引用变量的值不能被修改。...return n;//不能返回局部变量的引用 } 观察下面这段代码,最终ret的结果并不是3,而是7 int& Add(int a, int b) { static int c = a + b;...return c; } int main() { int& ret = Add(1, 2); Add(3, 4); cout << "Add(1, 2) is :" <...有多级指针,但是没有多级引用 访问实体方式不同,指针需要显式解引用引用编译器自己处理 引用比指针使用起来相对更安全(没有空引用,指针有空指针,容易出现野指针,不容易出现野引用

    15910

    C++引用

    这两天在C语言的基础上看了C++了一部分,现在看到了除了C语言可以通过值传递和地址传递之外,还可以通过引用的放大进行传递。 其意义就相当于给变量起一个别名。...(3).初始化之后不能别其他变量再次引用。 (4).不能引用数组。(部分编译器可以,但是这种行为会破环稳定性。) (5).不能建立引用引用。...书上的定义: int a=3; int &b=a; int &c=b; 其实我认为这样是对的,真正错误的是以下形式: int a=3; int &b=a; int &&c=b; 问题:通过引用把三个整数从小到大排列...change(int &x,int &y) { int temp; temp=x; x=y; y=temp; } void sort(int &a,int &b,int &c)...{ if(a>b)change(a,b); if(a>c)change(a,c); if(b>c)change(b,c); } int main() { int m,

    49320

    C++入门】—— C++入门 (中)_引用

    前言:了解了什么是C++,我们进入了C++入门知识的命名空间,现在我们接着来讲剩下的C++入门知识讲解。...如果前面还有什么不懂的只是不妨仔细阅读上一篇: C++入门知识 (命名空间) 本篇主要内容: 缺省参数 函数重载 引用 1....func函数的地址编译器无法知道调用哪个函数,因此C语言不支持函数重载 在C++的汇编中,我们发现这两个函数 C++中函数参数的类型,数量,顺序不同在符号表中的名字就不一样,就可以区分两个函数,...所以支持重载 C语言符号表中只有一个函数名,所以C语言程序不支持重载 3....总结 本小结我们了解C++入门的三大知识,缺省参数,函数重载,以及引用,在后面C++的学习中这些都极为重要,尤其是引用。到这里我们已经入门一大半了,还有最后一点入门知识,我们期待下回分解!

    9610

    C#引用C++代码

    在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用。...那就是用托管C++C++类给封装一下,然后再提供给C#来使用。下面就用代码来详细说明怎样用托管C++来封装上面的那个C++类。...中使用类Person,首先要添加对ManageCppDll.dll的引用,然后就可以像用普通的C#类一样的使用类Person了。...其实,上面的方法也算是一种BRIDGE模式,由托管C++充当了C#中使用用C++开发的类的桥梁。...通过这个桥梁,可以很容易的重用以前用C++开发的类,让这些C++类继续在C#中发挥它们的效用,让开发变得事半功倍。

    1.3K10
    领券