首页 程序笔记 c++中返回引用类型的值

c++中返回引用类型的值

前言

通过使用引用而不是指针,可以使C程序更容易阅读和维护。C函数可以以与返回指针类似的方式返回引用。

返回引用的作用和示例

当函数返回引用时,它将返回指向其返回值的隐式指针。这样,可以在赋值语句的左侧使用函数。例如,考虑这个简单的程序:

#include iostream
#include ctime
 
using namespace std;
 
double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};
 
double setValues( int i ) {
   return vals[i];   // return a reference to the ith element
}
 
// main function to call above defined function.
int main () {
 
   cout  Value before change  endl;
   for ( int i = 0; i  5; i++ ) {
      cout  vals[  i  ] = ;
      cout  vals[i]  endl;
   }
 
   setValues(1) = 20.23; // change 2nd element
   setValues(3) = 70.8;  // change 4th element
 
   cout  Value after change  endl;
   for ( int i = 0; i  5; i++ ) {
      cout  vals[  i  ] = ;
      cout  vals[i]  endl;
   }
   return 0;
}

当以上代码编译并执行时,将产生以下结果:

Value before change
vals[0] = 10.1
vals[1] = 12.6
vals[2] = 33.1
vals[3] = 24.1
vals[4] = 50
Value after change
vals[0] = 10.1
vals[1] = 20.23
vals[2] = 33.1
vals[3] = 70.8
vals[4] = 50

返回引用的注意事项

返回引用时,请注意所引用的对象不会超出范围。因此,返回对局部变量的引用是不合法的,但可以放心的返回对静态变量的引用。如下代码:

int func() {
   int q;
   //! return q; // 编译时报错
   static int x;
   return x;     // 安全, x 在当前作用域外是有效的
}
3

站心网

前言 通过使用引用而不是指针,可以使C程序更容易阅读和维护。C函数可以以与返回指针类似的方式返回引用。 ..

为您推荐

float 与 double 类型区别

float 单精度浮点数在机内占 4 个字节,用 32 位二进制描述。double 双精度浮点数在机内占 8 个字节,用 64 位二进制描述。浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。数符占 1 位二进制..

ASP.NET MVC中有四种过滤器类型

在ASP.NET MVC中有四种过滤器类型Action1、在ASP.NET MVC项目中,新建文件夹Filter,然后新建类MyCustormFilter,继承自ActionFilterAttribute类,我们来看下ActionFilterAttribute类有如下四个方法,从命名我应该就..

AutoMapper.AutoMapperMappingException”类型的异常在 AutoMapper.dll 中发生,但未在用户代码中进行处理

今天修改别人的代码抛出了这样的异常: AutoMapper.AutoMapperMappingException”类型的异常在 AutoMapper.dll 中发生,但未在用户代码中进行处理。进行了调试,往下走的时候直接报错了,百度之~中文网站上没..

.NET Core Razor Page ajax请求返回400 Bad request

Razor页面被设计为默认启动防跨站请求伪造攻击的,防伪令牌生成和验证被自动包含在Razor页面中。打开页面可以看到表单里有一个隐藏的input<input name="__RequestVerificationToken" type="hidden" value="CfDJ8JOah..

.NET Core Razor page/MVC 返回json忽略空属性

.NET Core Razor page/MVC 返回json忽略空属性,修改program.cs。添加配置builder.Services.AddRazorPages().AddJsonOptions(options => {options.JsonSerializerOptions.DefaultIgnoreCondition = System.Text.Json..

10个c#基础面试题和答案

以下是10个常见的 C# 基础面试题及其答案:C# 中的值类型和引用类型有什么区别?答案:值类型直接存储数据的值,而引用类型存储对数据的引用。值类型在栈上分配内存,而引用类型在堆上分配内存。什么是命名空间(Nam..

.NET Core怎么判断请求类型

NET Core 中可以通过以下方法判断请求类型:使用 HttpRequest.Method 属性:HttpRequest.Method 属性可以获取请求方法,例如 GET、POST、PUT、DELETE 等。var request = HttpContext.Request;if (request.Method == ..

C# object和dynamic类型的区别

在C#中,object和dynamic类型都被用作存储任何类型的数据,但它们的行为和用途有一些关键差异。下面是它们之间的主要区别:类型安全:object类型:是类型安全的。当你将一个变量声明为object类型,编译器会在编译时..

支持多种不同类型的数据库管理工具分享

有许多数据库管理工具可以支持多种不同类型的数据库。以下是一些常见的支持多种数据库的数据库管理工具:DBeaver: DBeaver是一个开源的数据库管理工具,支持多种数据库系统,包括MySQL、PostgreSQL、Oracle、SQL Se..

js判断浏览器类型

通过js可以判断浏览器类型,内核和终端,如是在手机打开还是电脑浏览器打开,具体代码如下。 var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { //移动终端..

.NET Core判断浏览器类型

.NET Core 可以通过以下方法判断浏览器类型:使用 HttpRequest.UserAgent 属性HttpRequest.UserAgent 属性可以获取发起请求的用户代理字符串。用户代理字符串包含有关发起请求的浏览器的信息,例如浏览器名称、浏览..

react单元测试模拟点击浏览器返回按钮时触发popstate事件

要在React单元测试中模拟点击浏览器返回按钮时触发popstate事件,你可以使用jsdom库来模拟浏览器环境。以下是一个示例,展示如何在测试中模拟点击浏览器返回按钮并触发popstate事件:假设你有一个组件,名为MyCompon..

C#使用ToString方法数组类型格式化为字符串

在C#中,很多数值类型的转换为字符串时都会使用到ToString方法,不同的数据类型可以使用一些常见的格式化输出,可以转换为指定的格式,以下总结一下各个基础结构对象的格式化。xxx.ToString(format):格式字符串采用..

.NET C#委托类型Func和Action用法

在C#中,Func和Action都是委托(delegate)类型,它们允许您将方法作为参数传递给其他方法,或者用于定义可以在稍后调用的方法。Func 和 Action 在不同的场景下都有广泛的应用,它们提供了一种方便的方式来处理委托..

C++中string字符串类型如何快速进行大小写转换

对于C/C++的初学者,对C/C++中的部分函数或用法不熟悉,字符串的大小写转换是最常用的,当然可以直接写代码通过for循环来做,实际上C++中有很多内建的函数可以用,比如字符串大些转小写或者小写转大写,可以使用tran..

C#中的ref struct类型的用法

在 C# 7 中,引入了 ref struct 类型。ref struct 类型是一种引用类型,它在堆栈上分配,而不是托管堆。这意味着 ref struct 类型的值类型语义,但它们的行为更类似于引用类型。ref struct 类型的主要目的是为了提供..

ios禁用左滑返回

在 iOS 应用程序中,左滑返回(也称为侧滑返回)是一个系统默认的手势,允许用户通过从屏幕左侧向右滑动来返回上一个视图控制器。如果你希望禁用这个手势,可以在你的应用程序中采取以下措施:方法一:禁用全局侧滑..

web中禁用ios左滑返回

在 Web 应用中,如果你希望禁用 iOS 设备的左滑返回手势,你可以使用以下方法实现:1. 使用 CSS 样式你可以在你的页面中添加以下 CSS 样式来禁用页面的滑动行为:body {overscroll-behavior-x: none;}这将禁止在 X ..

oracle timestamp 数据类型

编程的时候,对于时间的处理,很多时候,我们都用到了时间戳类型,即timestamp类型。 插入数据的时候,不注意的话,执行sql总是报“无效的月份”。 这是因为我们的数据格式不对,但是如果我们复制一个tim..

Linux中libusb读写CDC类型USB设备的代码及解析

前言在Linux中对USB类型的CDC设备,默认识别为一个USBTTY设备,也就是串口设备,可以使用串口通讯的方式进行通讯,但在USB固件开发时,CDC类型的设备更容易实现,参考的代码也更多,实际并不是一个串口设备,或者想..

发表回复

返回顶部