#include <iostream>
using namespace std;
//1 、引用作为参数
// void swap(int& a,int& b){
// int temp = 0;
// temp = a;
// a = b;
// b = temp;
// }
// 2 、引用作为返回值
int& add(int& a, int& b){
// (1) 局部变量
//int sum = 0; //sum为局部变量,函数执行完成后,系统自动回收资源,sum的空间被回收,在使用引用访问这块空间,属于非法访问会段错误
// int sum = (int *)malloc(sizeof(int));
// sum = a+b;
// return sum;
// (2) malloc //可以
int *sum = (int *)malloc(sizeof(int));
*sum = a+b;
return *sum;
// (3) malloc //可以
// (4) malloc //可以
}
int main(int argc, char const *argv[])
{
//1 、引用作为参数
// int x = 10;
// int y = 20;
// cout <<"x = " << x <<"y = " << y << endl;
// swap(x,y);
// cout <<"x = " << x <<"y = " << y << endl;
// return 0;
// 2 、引用作为返回值
int x = 10;
int y = 20;
int ret = add(x,y);
cout << ret << endl;
}
//结论,引用作为返回值时,只能是全局变量,或static修饰的局部变量,或者malloc申请的空间也可以