在这个例子中:
#include <iostream>
using namespace std;
void foo(int& x)
{
x = x%2 + 10;
}
int* goo(int& y)
{
y = y/100 + y%10;
return &y;
}
void main()
{
int temp = 1234;
int *p = goo(temp);
cout << temp << endl;
foo(*p);
cout << temp << endl;
}
goo函数获取int地址, 但是你可以看到main有一个你发送给这个函数的int temp。 该函数应该得到一个地址,但它得到int怎么可能?
我运行程序它确实有效,我不明白为什么。
答案 0 :(得分:0)
这不是&#34; int&#34;的地址。松散定义,int的地址将是指针,这是goo返回的内容。它将引用传递给int类型的存储,或者用C语言说,int参数通过引用传递(在C中表示指针被传递)。引用接近指针,但不受指针数学的影响,并且与变量具有相同的语法。
函数goo()返回一个指向通过引用传递的参数的指针,本质上它返回指向temp的指针。这些是频繁的声明符,用于组合标识符:
引用类型的变量不能被单元化,只能通过左值初始化它们。引用被评估为左值,评估到与用于初始化的左值相同的存储。
var=$(curl -sI "$url" | awk -F': *' '$1=="Content-Length"{print $2/(120*1024*1024)}')
除了重载运算符的形式参数列表,移动语义和模板构建之外,很少使用rvalue引用的声明。