首页
学习
活动
专区
工具
TVP
发布

12.4 C++引用

C++对象引用C++中,常用常指针和引用作函数参数,既能保证数据安全,使数据不能被随意修改,在调用函数时又不必建立实参的拷贝。 用常指针和引用作函数参数,可以提高程序运行效率。...在C++中,如果变量名和引用名都指向同一段内存单元,形参为变量的引用名,实参为变量名,在调用函数进行虚实结合时,并不是为形参另外开辟一个存储空间,而是把实参变量的地址传给形参,这样引用名也指向实参变量。...C++对象引用举例 #include  using namespace std; class Time {   public:   Time(int,int);   int hour...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++学习路线    C++开发工具 VC6.0、Devc++、VS2019使用教程 100道C语言与...C++源码案例请去公众号:C语言入门到精通

49300

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

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

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

C++ 左值、右值与引用

代码编译运行环境:VS2017+Win32+Debug 文章目录 1.左值的定义 2.建立引用的条件 3.引用的特殊性质 参考文献 1.左值的定义 左值(Lvalue)是 C++ 中的一个基本概念,...否则,只能另外创建一个无名变量,该变量中存放非左值表达式的运算结果,然后再建立对该无名变量的引用。 在 C++ 中,经常把函数的参数声明为引用,这样在发生函数调用时可以减少运行时的开销。...但要特别注意的是,将函数的参数声明为一般的引用还是声明为引用,是有讲究的。...3.引用的特殊性质 对某个变量(或表达式)建立引用时,允许发生类型转换,而一般的引用则不允许,见下面的程序。...以上说明了无名临时变量具有常量性,只能建立引用

44820

C语言 | 指针引用数组

C语言数组元素的指针 指针变量既可以指向变量,也可以指向数组元素,所谓数组元素的指针就是数组元素的地址。 引用数组元素可以用下标法,也可以用指针法,即通过指向数组元素的指针找到所需的元素。...在C语言中,数组名代表数组中首元素的地址,使用指针法能使目标程序质量高,因为其占内存少,运行速度快。 C语言引用数组元素时指针的运算 在一定条件下允许对指针进行加和减的运算。...C语言通过指针引用数组元素 1、下标法 //如 array[i] 2、指针法 //如 *(array+i)或*(point+i) 其中array是数组名,point是指向数组元素的指针变量,其初值point...C语言通过指针引用多维数组 1、多维数组元素的地址 性质与二维数组差不多,但需要注意的是,多维数组由于分配内存情况不同,所显示的地址可能是不同的。...C语言通过指针引用数组案例 #include//头文件 int main()//主函数 {   int array[3]={1,3,4};//定义数组且初始化   int *point

1.8K20

认识左值与引用

否则,只能另外创建一个无名变量,该变量中存放非左值表达式的运算结果,然后再建立对该无名变量的引用。 在C++语言中,经常把函数的参数声明为引用,这样在发生函数调用时可以减少运行时的开销。...---- 3.引用的特殊性质 对某个变量(或表达式)建立引用时,允许发生类型转换,而一般的引用则不允许,见下面的程序。...同样,之所以允许Max(i,5.5)这样的函数调用,也是因为函数Max()的第二个参数是引用,因此可以将实参5.5先转换为int类型的无名变量,然后再建立对该无名变量的引用。...以上说明了无名临时对象具有常量性,不能作为左值,因此只能建立引用。但是,是不是所有类型的的无名临时对象都具有常量性,不能作为左值,只能建立引用呢?...临时变量作为非const的引用进行参数传递引发的编译错误 ---- 参考文献 [1] C++高级进阶教程.陈刚.武汉大学出版社

52620

8.3 C语言通过指针引用数组

2、引用数组元素可以用下标法,也可以用指针法,即通过指向数组元素的指针找到所需的元素。 3、使用指针法能使目标程序质量高(占内存少,运行速度快)。...4、在C语言中,数组名(不包括形参数组名,形参数组并不占据实际的内存单元)代表数组中首元素的地址。 02在引用数组元素时指针的运算 1、在一定条件下允许对指针进行加和减的运算。...04用数组名作函数参数 1、C语言调用函数时虚实结合的方法都是采用“值传递”方式,当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时。...05 通过指针引用多维数组 1、多维数组元素的地址 (1)性质与二维数组差不多,但需要注意的是,多维数组由于分配内存情况不同,所显示的地址可能是不同的。...C语言 | 输出杨辉三角 更多案例可以go公众号:C语言入门到精通

1.5K2625

C++】类和对象之引用与运算符重载

前言 在之前的文章中提到了引用,再来看运算符重载之前,先来看看引用的使用。 2....引用 在使用引用的时候可能会出现一些问题,例如:b是a的别名,b++,那么a肯定也加加了,但有时我们也不希望这样。 如果不希望a传过去改变,那么就得加上const。...那么这里就能使用const加引用。 这里用到引用c是a的别名,但是不能修改,也就是不能通过c修改a。他是一种权限的缩小 。 这里要给x取别名,是不可以的。...下面的引用也是一样的,是把d拷贝给临时变量,ri是这个临时变量的别名,因为临时变量具有常性,所以用引用。 那么为什么要产生临时变量呢? 这里i和ch比较为什么会相等?...内置类型就可以,是语言定义的。 自定义类型是多个类型的组合,编译器不知道怎么比较,所以不支持,需要自己来定义。

8610

左值、右值与引用

否则,只能另外创建一个无名变量,该变量中存放非左值表达式的运算结果,然后再建立对该无名变量的引用。 在C++语言中,经常把函数的参数声明为引用,这样在发生函数调用时可以减少运行时的开销。...但要特别注意的是,将函数的参数声明为一般的引用还是声明为引用,是有讲究的。...3.引用的特殊性质 对某个变量(或表达式)建立引用时,允许发生类型转换,而一般的引用则不允许,见下面的程序。...同样,之所以允许Max(i,5.5)这样的函数调用,也是因为函数Max()的第二个参数是引用,因此可以将实参5.5先转换为int类型的无名变量,然后再建立对该无名变量的引用。...以上说明了无名临时变量具有常量性,只能建立引用

1.1K10

【编程基础】C语言指针、引用和取值

引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。...&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。...// 声明一个int指针 int *ptr; // 声明一个int值 int val = 1; // 为指针分配一个int值的引用 ptr = &val; // 对指针进行取值,打印存储在指针地址中的内容...第6行的&val是一个引用。在val变量声明并初始化内存之后,通过在变量名之前使用地址操作符&我们可以直接引用变量的内存地址。...这里可以把指针、引用和值的关系类比为信封、邮箱地址和房子。一个指针就好像是一个信封,我们可以在上面填写邮寄地址。一个引用(地址)就像是一个邮件地址,它是实际的地址。取值就像是地址对应的房子。

2.1K70

C语言 | 指针引用字符串

C语言字符串的引用方式 在C语言程序中,字符串是存放在字符数组中的。 用字符数组存放一个字符串,可以通过数组名和下标引用字符串中的一个字符,也可以通过数组名和格式声明%s输出该字符串。...C语言使用字符指针变量和字符数组注意事项 指针变量的值是可以改变的,而数组名代表一个固定的值,即数组首元素地址,不能改变。...C语言通过指针引用数组案例 #include #include //为了引入求字符串长度函数 int main() { char str[] = "hello...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线 C语言开发工具 VC6.0、Devc++、VS2019使用教程...100道C语言源码案例请去公众号:C语言入门到精通

1.2K40

C++】类与对象(构造函数、析构函数、拷贝构造函数、引用

C++把类型分成内置类型(基本类型)和自定义类型: 内置类型就是语言提供的数据类型,如:int/char......C++规定自定义的类型都会调用拷贝构造。 注意:拷贝构造时要传引用,不能传值。如果传值,根据C++规定,会调用拷贝构造,这样就会无穷递归下去,发生错误。...引用 b是a的别名,修改b时,a也会跟着改变。如果传参时想要改变外面的,就要传引用,但如果不想改变外面的,就需要用const引用。const引用是别名但是不能修改,即权限的缩小。...a是可读可写的,而c只是可读的。 x是只可读,而y是可读可写的,不能放大权限。解决方法是在int& y前面加上const。 10是常量,z要用引用。...a+x的表达式返回值是临时对象,临时对象具有常性,也要用引用。 如果我们只是想传值过去,建议用const引用。因为如果直接用引用,我们将不能直接传常量过去。

9410

引用 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); } 另外,因为函数只能返回一个值,所以如果想函数返回多个值的话,一种方法就是返回一个结构体,还有就是用引用传递参数

8330

C语言进阶篇】动态内存考笔试题

鸽芷咕:个人主页 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!...而这需要一些基本的C/C++程序内存分配的几个区域这些知识,今天就给大家一起讲一讲! 本期文章收录在《C语言进阶篇》,大家有兴趣可以看看呐!...注:本笔试题出自《高质量的C/C++编程》林锐博士这本书 《高质量的C/C++编程》《动态内存管理》《位段 联合 枚举》 C/C++程序的内存开辟   ⛳️大家在学习C语言的过程中不知道思没思考过这个问题...这些就是我们C/C++在运行中的大致内存区域不知道现在清楚了嘛?...而我们 strcpy 对空指针解引用,程序肯定会崩溃!

6610

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

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

16230

C++_引用

引用 引用的特性: 引用在定义时就要初始化 一个变量可以被多个引用 一个引用只能由一个实体变量,不能引用多个 引用不能降低实体的可执行权限,只能提升或者不变 比如在引用常量的时候,常量只有可读权限,没有写权限...,因此在定义引用的时候必须要用const来定义出常量引用 const int a = 10; int &b = a;//错误 const int &c = a;//正确 int d; int &e =...void Add(int a, int b, int &c) { a += a; b += b; c = a + b; } int main() { int a, b;...tem是n的引用,则通过返回值访问n的时候就是非法访问 所以C++的规定是: 离开函数作用域之后,如果返回值的内存还没有被释放(比如返回值类型是静态变量全局变量之类),则可以使用引用返回,否则必须使用传值返回...引用在定义时必须初始化,指针没有要求 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型 实体 没有NULL引用,但有NULL指针 在sizeof中含义不同:引用结果为引用类型的大小

25230

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

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

24220
领券