举例说明:
int set()
{
return a;
}
此时生成的是变量a的一个拷贝,即生成了一个临时变量,当这个变量使用完毕之后,变量就被销毁了,所以这种返回不能用作左值运算,如:set() = 5;这是不正确的。
int& set()
{
return a;
}
在第二个例子中,返回的是引用,那么,就相当于返回的是变量a的别名,就可以对该变量操作,如赋值等等。set() = 5;是正确的。
但是在引用返回时得注意一个问题,就是不能返回局部变量的引用,如:
int& set()
{
int a;
return a;
}
此时就会调用出错,因为a是临时变量,函数结束是就自动销毁了,不能再创建别名了。但是将int & 改成int就可以了。
C语言系列都是 Case Sensitive (区分大小写)的,不知道你到底是问int还是INT
一,如果你问的是int
int是声明整形变量的KeyWord
int &是别名,一般用在函数的 list of parameter 中,表示对int型变量的引用, 如
returntype method(int &a,int &b);
还有下面的情况
int a = 15;
int &b=a; 既a与b指向同一个变量,指向同一个内存地址, 对a 和b进行任何操作的结果都相同
二,如果你问的是INT
INT 估计是个Macro ( #define INT int) 其实就是int
INT & 同上
返回int 其实返回的是一个不可修改临时的副本
返回int& 返回的是函数里面那个实际的变量 如果你的返回进行修改(当然你不能对返回赋值给其他变量过 除非是引用) 那会反应到函数里面
#include
using namespace std;
int &fun1(int &b)
{
return b;
}
int fun2(int &b)
{
return b;
}
int main(void)
{
int a = 10;
int b = 10;
cout << "a = " << a << endl;
fun1(a) = 20;
cout << "a = " << a << endl; // 反应出修改
cout << "b = " << b << endl;
// fun2(b) = 20; 不能这样做
cout << "b = " << b << endl;
getchar();
return 0;
}
int max(int a, int b) //返回的是值
{
return (a > b) ? a : b;
}
int &max(int &a, int &b) //返回的是实参的引用,就是实参本身
{
return (a > b) ? a : b;
}
int 类型返回的是数据值
int &类型返回的是数据的内存地址