传值返回:
int Count1()
{
int n = 0;
n++;
return n;
}
int main()
{
int& r1 = Count1();
return 0;
}
总结:返回局部变量的引用是不安全的。
static int c=a+b;
只有第一次定义c时才会执行
要想给变c的值应
static int c=1;
c=a+b;
传值、传引用效率比较
#include <time.h>
struct A{ int a[10000]; };
A a;
// 值返回
A TestFunc1() { return a;}
// 引用返回
A& TestFunc2(){ return a;}
void TestReturnByRefOrValue()
{
// 以值作为函数的返回值类型
size_t begin1 = clock();
for (size_t i = 0; i < 100000; ++i)
TestFunc1();
size_t end1 = clock();
// 以引用作为函数的返回值类型
size_t begin2 = clock();
for (size_t i = 0; i < 100000; ++i)
TestFunc2();
size_t end2 = clock();
// 计算两个函数运算完成之后的时间
cout << "TestFunc1 time:" << end1 - begin1 << endl;
cout << "TestFunc2 time:" << end2 - begin2 << endl;
}
指针和引用的底层: