如何将引用变量返回到函数中?

时间:2016-01-19 08:44:18

标签: c++ arrays variables reference

#inlcude<iostream>
using namespace std;

int & change(int);
int a[5]={10,20,30,40,50};
int main()
{
       int i;
       for(i=0;i<5;i++)
           change(i)=a[i]+5;

       for(i=0;i<5;i++)
           cout<<"   "<<a[i]<<endl;
}

int & change(int i)
{
        return a[i];
}

有效。我们怎样才能正常左侧?为什么它没有给我错误左值是必需的?

请解释它是如何工作的以及参考变量如何在函数中返回?

3 个答案:

答案 0 :(得分:4)

此处,change(i)通过引用返回int类型的值。

在C ++中通过引用返回值

通过使用引用而不是指针(无分段错误),可以使C ++程序更易于阅读和维护。 C ++函数可以以与返回指针类似的方式返回引用。

当函数返回引用时,它返回一个指向其返回值的隐式指针。这样,函数可以在赋值语句的左侧使用。所以change(i)=a[i]+5;是一个可接受且正确的陈述。

指针和引用之间的关键区别是,引用不能是NULL,而指针可以。声明时必须初始化引用。

int i;
int &j = i;      // Acceptable
int &k;          // Not Acceptable
int &l = NULL;   // Not Acceptable
int *p = NULL;   // Acceptable
int *p1 = &i;    // Acceptable

答案 1 :(得分:1)

您正在返回一个左值。

非const引用只能绑定到左值。您正在返回对内存中数组的引用。这是一个左值。所以它有效。

这不起作用:

int & change(i) {
    return 7;
}

7没有内存地址,它是一个常量。它不会绑定到返回类型。

答案 2 :(得分:0)

您的数组由值引用组成。您的change(i)返回对值的引用,并在您修改它之后