我有这样的代码。
#include <iostream>
using namespace std;
int c=0;
int& abc()
{
c++;
return c;
}
int main()
{
cout << c << endl;
int f = abc();
cout << c << " " << f << endl;
f++;
cout << c << " " << f << endl;
}
我得到的输出是
0
1 1
1 2
现在函数abc返回一个整数引用。所以语句int f=abc();
应该将整数f和c指向同一个地址。但是为什么语句f ++不会影响c的值?
答案 0 :(得分:2)
sha1($token)
因为您的int &f = abc();
不是引用。它只是一个赋值为f
的变量。您应该将其写为上面的内容。
答案 1 :(得分:1)
这是因为abc()
虽然通过引用返回int,但f
并没有&#34;抓住&#34;此引用,而是获取返回的引用指向的值。如果您希望f
获取引用,则需要将其定义为引用类型。
这样做:
#include <iostream>
using namespace std;
int c=0;
int& abc()
{
c++;
return c;
}
int main()
{
cout << c << endl;
int &f = abc();
cout << c << " " << f << endl;
f++;
cout << c << " " << f << endl;
}
答案 2 :(得分:0)
int f = abc();
^^^ // This type is 'int' not 'int&'
f
的{{1}}类型为int
,与int&
不同,导致创建副本。因此,f
不是c
的引用,而是c
从abc
返回时,它被初始化为 forTopUpPin = [[UITextField alloc] initWithFrame:CGRectMake(50.90, itemTop, self.view.frame.size.width - 92, 20)];
forTopUpPin.tag = 1;
forTopUpPin.placeholder = @"Enter Topup PIN";
forTopUpPin.borderStyle = UITextBorderStyleNone;
forTopUpPin.font = [UIFont fontWithName:@"Arial" size:15];
forTopUpPin.backgroundColor = [UIColor whiteColor];
中存储的相同值。
答案 3 :(得分:0)
是abc()
会返回参考。但f
只是一个整数变量。因此,int f=abc()
所做的是将c
的值分配给f
。
当您调用f ++时,它只会更改f
变量值。它不会更改c
的值。因为f
不是指针。
答案 4 :(得分:0)
在以下代码中:int f = abc()
f 是 c 值的副本,这两个值是不同的。当您执行 ++ f 时,您正在增加 f 的副本,这对 c 没有影响。当您执行以下操作时:int &f = abc()
您正在创建一个参考变量 f ,该变量绑定到 c 的值,因此 f 是变量 c 的别名,对 f 所做的任何更改均为 c 。