这是一个很久以前遗留下的一个问题,一直不知道n为什么等于100,今天看见了就把它解决一下.

#include "iostream"

using namespace std;

int n;
int f()
{
    n+=2;
    return n;
}
int main()
{
    f()=100;
    cout<<endl;
    return 0;
}

在两个函数中并没有给n赋值,为什么n的值是100呢?

int &f()是一个返回值为引用的函数,所以他返回的就是n的引用,f()=100,就相当于n=100.

运行下面这段程序你就会发现n和f()的地址其实是一样的.

#include "iostream"

using namespace std;

int n;
int &f()
{
    return n;
}

int main()
{
    f()=100;
    printf("%p\n",&n);
    printf("%p\n",&f());
    printf("%d\n",n);
    return 0;
}