有人能解释输出吗
can anyone explain the output?
有人能解释一下输出吗?
#include<iostream>
using namespace std;
int &fun(){
static int x = 10;
return x;
}
int main(){
fun() = 30;
cout << fun();
return 0;
}
输出为30
这就是静态局部变量的工作方式-它们在函数调用之间保持值。基本上,fun()
有一个静态局部并返回对它的引用,其效果与全局变量大致相同。
您通过引用返回静态,所以当您执行fun() = 30
时,您会更改它。
很清楚,不是吗?
基本上,foo()
向x
返回引用。
当您调用fun()
时,会创建一个静态变量,并返回对它的引用。基本上,由于static
,即使您退出函数的作用域,该变量也不会被销毁。用30影响引用,然后调用得到的函数30(第二次调用时的x与第一次调用时完全相同)。在这种情况下,静态基本上像全局变量一样工作。
AS fun是对函数的引用,因此当您编写此行时fun() = 30;
,它将30存储在返回值中,即x
,这就是为什么您得到的输出为30。
相关文章:
- 有人能解释一下为什么下界是这样工作的吗C++的
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 你能解释一下什么运行时错误是如何解决它的吗?
- 条件不起作用,谁能解释为什么会这样?
- 有人能解释一下这些说法背后的逻辑是什么吗
- 谁能解释一下这个BFS代码是如何工作的?
- 谁能解释一下C++中关于cin.tie()的代码?
- 谁能解释我为什么这种特征无法正常工作
- 你能解释一下这个语法吗:ros::rate loop_rate(10);
- 谁能解释一下上面的代码是如何工作的以及使用哪个概念
- MPI_Op_create:候选功能不可行.自定义结构指针不能解释为空指针
- 谁能解释这个代码?为什么显示 1
- 有人能解释一下getline和char的问题吗
- 有人能解释一下特殊的std::函数模板参数列表语法(这个奇怪的类型(Types..))吗
- 引用变量何时合适,为什么?你能解释一下实际的语法和位置吗?
- 谁能解释一下这个简单逻辑背后的逻辑?我迷路了
- 当我做出语句 root->right->right = newnode(7);注释,编译器显示运行时错误。谁能解释为什么?
- 有人能解释一下最多一次不变和存在、所有权和守恒规则是什么吗?
- 有人能解释输出吗
- 您能解释一下在C++中使用std::hex和std::wios::hex时输出的原因吗