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

返回值vs指针vs C++中的引用

返回值、指针和C++中的引用都是在C++编程中用于处理函数返回结果或传递参数的机制。

  1. 返回值:返回值是函数执行完毕后返回给调用者的结果。在函数定义时,可以指定函数的返回类型,并在函数体内使用return语句返回结果。返回值可以是任意类型的数据,包括基本数据类型、自定义类型、结构体等。通过返回值,函数可以将计算结果或处理结果传递给调用者进行后续操作。
  2. 指针:指针是一个变量,存储的是内存地址。通过指针,可以间接访问和修改内存中的数据。在函数中,可以使用指针作为参数,将数据的地址传递给函数,从而在函数内部对数据进行修改。指针可以通过解引用操作符(*)来访问指针所指向的内存中的数据。
  3. 引用:引用是C++中的一种数据类型,它提供了对已存在的变量的别名。引用在声明时必须初始化,并且一旦初始化后,就不能再引用其他变量。引用可以看作是变量的别名,对引用的操作实际上是对原变量的操作。在函数中,可以使用引用作为参数,通过引用传递数据,从而在函数内部对数据进行修改。

对于返回值、指针和引用的选择,可以根据具体的需求和情况进行选择:

  • 返回值适用于需要返回单个结果的情况,特别是当返回结果是自定义类型或结构体时,可以方便地将计算结果传递给调用者。
  • 指针适用于需要在函数内部修改传入的参数值的情况,通过传递参数的地址,可以直接修改参数的值。
  • 引用适用于需要在函数内部修改传入的参数值的情况,通过引用传递参数,可以直接对参数进行修改,同时具有更好的可读性。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(云函数):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动推送):https://cloud.tencent.com/product/umeng
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Tencent XR):https://cloud.tencent.com/product/xr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

vs2019scanf返回值被忽略_vs2017scanf

大家好,又见面了,我是你们朋友全栈君。 一、问题再现 如下是笔者在学习数据结构二叉树时遇到问题: 报错警告:返回值被忽略:”scanf”。...微软公司觉得其不安全,所以在VS编译器中提供了scanf_s()函数,这是VS编译器特有的函数。强制用户提升安全性,如果想要在VS中使用scanf()函数,则可以通过以下四种方法解决。...2、关闭VSSDL安全检查 点击应用确定之后,程序正常运行 3、在程序开头添加命令 在程序开头添加 #pragma warning(disable:4996) 或者 #pragma warning...4、添加宏定义 在项目文件开头添加宏定义,来忽略安全检查 #define _CRT_SECURE_NO_WARNINGS 或者 在预处理编辑宏,相当于每次执行程序时,编译器自动帮你执行,省去了自己要在文件开头定义宏麻烦....c++源文件时候这行代码就会自动出现在第一行。

1.1K20

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

; 在 C++ 语言 , 使用 引用 时 , C++ 编译器 会自动将 引用 翻译为 一级指针 使用 , 自动 在 一级指针 变量 旁边加上 取地址符号 & 和 取值符号 * ; 指针引用 就相当于...二级指针 , 其 实现效果 , 等同于 二级指针 ; C++ 编译器 遇到 指针引用 时 , 会自动将 引用指针 转为 二级指针 ; 2、引用本质 - 函数间接赋值简化版本 使用函数进行间接赋值...; 如果将 函数 形参类型 设置为 引用 类型 , 也能达到 间接赋值 效果 ; 引用 实际上是 把 间接赋值 三个条件后两个条件进行了合并 , C++ 编译器遇到引用 , 还是需要将 引用...等同于 二级指针 ; 其效果等同于上一篇博客 【C++C++ 引用详解 ⑥ ( 普通变量 / 一级指针 / 二级指针 做函数参数作用 ) int getStudent(Student** stu..., 然后再为该 一级指针 分配内存 ; // 为形参声明 Student* 指针引用 分配内存 // 一维指针引用 相当于直接访问一维指针 // 相当于为 main

29620

c++引用作为返回值

引用意义: 引用可以看作某个变量“别名”,作为某个变量别名而存在,因此在一些场合可以代替指针引用相对于指针来说具有更好可读性和实用性,能起到指针部分作用,但是比指针安全。...引用c++里面可以说是一把利器,引用好的话可以写出非常精妙程序。 引用本质: 引用C++内部实现是一个常指针。...Type& name çè Type* const name C++编译器在编译过程中使用常指针作为引用内部实现,因此引用所占用空间大小与指针相同。...:t = temp; a = t; 返回函数引用 返回引用实际返回是一个指向返回值隐式指针,在内存不会产生副本,是直接将temp拷贝给a,这样就避免产生临时变量,相比返回普通类型执行效率更高...返回函数引用去初始化一个新引用 这个和前面一样,都是不会产生副本,但是现在是用返回值去初始化一个引用声明c,也就是说这时候变成了变量temp别名,在c生命周期内temp是一直有效,这样做完全可以

62310

详解c++指针指针指针引用

展示一下使用指针指针指针引用修改传递给方法指针,以便更好使用它。...(这里说指针指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针复本传递给了方法,也可以说传递指针指针值传递。...如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改指针copy而不是指针本身,原来指针还保留着原来 值。...换句话说,我们修改是main()方法里 *pn指针 **p: 两次解引用是指向main()方法里*pn内容 指针引用 再看一下指针引用代码 int m_value = 1; void func...看一下func(int *&p)方法 p:  是指针引用,main()方法里 *pn *p:是main()方法里pn指向内容。

1.3K60

C++C++ 引用详解 ③ ( 函数返回值不能是 “ 局部变量 “ 引用指针 | 函数内 “ 局部变量 “ 引用指针做函数返回值无意义 )

2、函数返回值特点 函数 返回值 几乎很少是 引用指针 ; 函数 计算结果 经常是借用 参数 地址 / 引用 进行返回 , 函数 返回值 一般返回一个 int 类型值 , 如果...int 为 0 就是成功 , int 为其它数值 , 就是错误码 ; 3、函数内 " 局部变量 " 引用指针做函数返回值无意义 如果 想要 使用 引用指针 作 函数计算结果 , 一般都是将...引用指针 作为 传入 参数 ; 在 main 函数 , 调用 函数 , 创建一个 变量 , 将 变量 地址 / 引用 传入 函数 , 在函数通过 指针符号 或者 引用 , 直接修改传入实参..., 也就是 修改 地址 / 引用 指向 内存数据 , 该操作可以修改 外部 main 函数变量值 ; 如果 想要 在 函数 , 返回一个 地址 / 引用 作为返回值 , 这个 地址 /...如果 想要 在 函数 , 返回 引用 / 指针 , 函数局部变量 引用 / 指针 是返回不出来 , 即使强行返回 引用 / 指针 , 也是当前 局部变量 被 分配 栈内存 地址 , 该函数 执行完毕后

30920

C++ 指针引用梳理

实际上这里object->method()等价于 (* object).method(),这是c++提供一种语法糖。...由于数组在内存是紧密相连排列,所以我们也就可以通过第一个元素地址和[n]下标来查询对应元素。...另外可以将指针与0做比较,判断指针是否为空。(如果是新标准 可能不行) 指针传参 指针传参是十分重要一个特性了,失去了指针C++也就失去了他最大性能优势。...采用引用类型如何编写 除此之外,函数指针不仅限于传参,和普通类型一样,函数指针一样可以先定义,后赋值为各个具体函数。...无论是租房还是买房,只要你收货时候,你这个地址还是有效,那就可以~ 所以无论是返回外部变量有效地址,还是通过new 进行动态分配空间地址,都是可以顺利返回给调用者。

47120

vs没有vc_vs控件

获得和设置流指针 所有输入/输出流对象都有至少一个流指针: ifstream,类似istream,有一个被称为get pointer指针,指向下一个将被读取元素。...可以使用以下成员函数来读取或配置流指针: tellg()和tellp() 这两个函数不用传入参数,返回pos_type类型值,即一个整数,代表当前get流指针位置(用tellg)或put流指针位置...要求传入参数类型与函数 tellg 和tellp 返回值类型相同。...由于这个原因,建议对以文本文件模式打开文件总是使用seekg 和 seekp第一种原型,而且不要对tellg 或 tellp 返回值进行修改。...例如,对于一个输出流, 每次成员函数put (写一个单个字符)被调用,这个字符不是直接被写入该输出流所对应物理文件,而是首先被插入到该流缓存(buffer)

73920

c++指针引用区别

目录 前言: 1、引用概念上是定义一个变量别名,而指针是存储一个变量地址。 2、引用在定义时必须要初始化,但是指针没有要求。...5、在sizeof含义不同:引用结果为引用类型大小,但指针始终是空地址空间所占字节个数(32位平台下占用4个字节,64位占用8字节)。...6、引用自加即引用实体增加1,指针自加即指针向后偏移一个类型大小。 7、有多级指针,但是没有多级引用。 8、访问实体方式不同,指针需要显示解引用引用则由编译器自己处理。...4、没有NULL引用,但有NULL指针。 5、在sizeof含义不同:引用结果为引用类型大小,但指针始终是空地址空间所占字节个数(32位平台下占用4个字节,64位占用8字节)。...6、引用自加即引用实体增加1,指针自加即指针向后偏移一个类型大小。 7、有多级指针,但是没有多级引用。 8、访问实体方式不同,指针需要显示解引用引用则由编译器自己处理。

52130

C++ 指针引用区别

指针是C系语言一大特色,也在很大程度上体现着C/C++精髓,一个数据对象内存地址称为该数据对象指针。...引用C++对C语言一个补充,它作用是为一个变量起一个别名。...那么从指针引用区别的角度考虑二者特性的话,有下面几点: (1)非空区别: 在任何情况下都不能使用指向空值引用, 一个引用必须总是指向某些对象。...(3)可修改区别: 指针引用另一个重要区别是指针可以被重新赋值以指向另一个不同对象。 但是引用则总是指向在初始化时被指定对象,以后不能改变,但是指定对象其内容可以改变。...如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么应该使用引用。 (5)补充 不能建立数组引用指针是可以代表数组,指向数组指针是数组首地址,但是引用是不可以

95980

C++指针引用区别

https://blog.csdn.net/sinat_35512245/article/details/53871767  指针引用C++两个很重要概念,它们功能看过去很相似,就是都是间接引用某个对象...,那么我们应该在什么时候使用指针,什么时候使用引用呢,下面请允许我慢慢道来: ---- 1.永远不要使用一个指向空值引用。...一个引用必须始终指向某个对象,所以当你确定使用一个变量指向某个对象时,但是这个对象在某些时间可能指向控制,这时候你就必须把变量声明为指针类型,而不是引用!...当你确定这个变量始终指向某个对象是,这时候你就可以把变量声明为引用类型。 char *str=0; //设置指针为空值 char &s=*str; //让引用指向空值 你应该避免出现上面的错误!...2.因为引用肯定要指向一个对象,所以,在C语言里引用必须被初始化。

66910

C++】自引用this指针秘密

当调用成员函数a.disp()时,编译系统就会把对象a起始地址赋值给this指针,于是在成员函数引用数据成员时,就可以通过this指针索引到对象a数据成员。...为什么叫this指针,而不是引用呢?...首先应该明确指针引用在底层实现是相同,之所以叫this指针,是因为最开始将C++称作带类C,而引用则是在C++1.0版才加入使用,因此叫做this指针。...this指针是如何访问类变量? 如果不是类,而是结构的话,那么,如何通过结构指针来访问结构变量呢?如果你明白这一点的话,那就很好理解这个问题了。...在C++,类和结构是只有一个区别的:类成员默认是private,而结构是public。this是类指针,如果换成结构,那this就是结构指针了。

79620

C++函数指针指针函数、返回值为函数指针函数浅谈

C++函数指针指针函数、返回值为函数指针函数浅谈 引言 函数指针指针函数是C重要而容易混淆概念,博主将通过两个实例来说明这两个截然不同概念。...而返回值为函数指针指针函数就更难理解了,放在文章最后来介绍。 函数指针 函数指针是一种特殊 指针,它指向函数入口。...指针函数是一种返回值指针 函数。...return 0; } 返回值为函数指针函数 其实在搞懂了函数指针指针函数后,这个概念并不难懂,其实这就是一个复杂一点指针函数,因为他返回值为函数指针。...先给一个例子: /* *本例是SGISTL源码一个函数,比普通返回值为函数指针函数要更复杂一点 *因为本例函数参数也是一个函数指针 */ void (* set_malloc_handler

1.5K10

C++指针引用区别

C++指针引用经常用于函数参数传递,然而,指针传递参数和引用传递参数是有本质上不同指针传递参数本质上是 值传递方式,它所传递是一个地址值。...,而指针不是 (引用指针多了类型检查) 这几天看重温了下《高质量C/C++编程指南》和 《More Effective C++》对于里面的引用指针觉得写得很精辟,同时在网上也找了些别人写总结,引用过来大家分享下...引用是操作受限了指针(仅容许取内容操作)。 ★《高质量C/C++编程指南》6.6     引用C++概念,初学者容易把引用指针混淆一起。...引用主要功能是传递函数参数和返回值C++语言中,函数参数和返回值传递方式有三种:值传递、指针传递和引用传递。     以下是“值传递”示例程序。...C++ const引用详解 (1) 在实际程序引用主要被用做函数形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象地址初始化引用是错误,我们可以定义一个指针引用

4.9K82

C++C++ 引用详解 ② ( 引用意义 | 引用本质分析 | 引用常量特征 | 引用所占内存空间与指针相同 | 引用C++ 编译器实现 | 引用编译时会自动翻译为常量指针 )

) { int c = 0; c = *a; *a = *b; *b = c; } 引用示例 : // 交换 a 和 b 值 // C++ 推荐方法 void swap3(int& a,...---- 1、C++ 引用是常量指针 综合上述引用特征 : 引用具有常量特征 , 是一个常量 ; 引用和变量都是相同内存空间别名 , 其地址都指向内存空间 ; 引用本身也占用内存空间 , 占用大小与指针相同...; 综合上面的三种特点 , C++ 语言编译器 , 引用本质是 : 类型* const 指针名称; 指针 ; 引用C++ 语言内部是 常量指针 , 下面 C++ 语言 " 引用 " 引用类型...& 引用名称 等同于 下面的 C 语言 " 常量指针 " 指针类型* const 指针名称 C++ 语言中 引用 , 其在 编译器实现 就是 " 常量指针 " , 因此 引用 占用内存空间与..., 只是对理解引用本质造成了困难 ; C++ 语言中 函数 , 使用 引用 作为函数参数 , 如下代码 : void swap(int& a, int& b) { int c = 0; c

27320
领券