今天了解了C++中引用的概念。引用可以简单理解成被引用对象的"绰号"。引用的主要功能是传递函数的参数和返回值。
Eg.
int a = 5;
int b = 10;
int &c = a;
c = b;
此时,c和a的值都为10。
关于引用的规则,引用和指针之间的比较,以及值传递,指针传递和引用传递的详细介绍可以参考如下链接:
http://tianyou8.blog.hexun.com/48362947_d.html#
我用visual studio 2010写了个关于引用的小程序,源代码如下:
#include<stdio.h>
void reference( int &a )
{
a = 10;
}
int main( void )
{
int n = 5;
printf( "Before calling function reference, n = %d\n", n );
reference( n );
printf( "After calling function reference, n = %d\n", n );
return 0;
}
当源文件的拓展名为.c时,程序编译第二行会报错。这说明visual studio 2010会调用C语言编译器(gcc)来编译程序,而C语言是不支持引用的。
当我将源文件的拓展名改为.cpp时,程序可以编译成功,运行结果如下所示:
Before calling function reference, n = 5
After calling function reference, n = 10
所以,visual studio 2010会根据源文件的拓展名来选择相应的编译器进行编译。
C++版源代码如下所示:
#include<iostream>
using namespace std;
void reference( int &a )
{
a = 10;
}
int main( void )
{
int n = 5;
cout << "n = " << n << endl;
reference( n );
cout << "n = " << n << endl;
//printf( "After calling function reference, n = %d\n", n );
return 0;
}