#include<iostream>
using namespace std;
void modiFy(int *a)
{
*a = 1000;
}
void modiFy(int &a) //对比这两个,第一个用了指针,第二个不用。传参:int &形参 = 实参
{
a = 1000;
}
//传常量,前提是没有改变常量的值
void print(const int &a)
{
cout << a << endl;
}
void printA(int &&a) //一旦引用这种写法,意味着不能传变量
{
cout << a << endl;
}
struct girl
{
char name[20];
int age;
int &getAge()
{
return age;
}
}
/*
注意:不能返回局部变量的引用
int &getNum() //错误的方式
{
int num = 12;
return num;
//这样是不允许的,因为这个函数被调用后,int num = 12;这个内存是不存在的
}
*/
int main()
{
//关于 &
//最基本用法,起别名
int num = 0;
int &ooxx = num;
ooxx = 2; //修改ooxx的值其实就是修改num的值
cout << num << endl;
//1.当作函数返回,防止拷贝本的产生(本质其实是指针)
int iNumber = 1;
modiFy(iNumber); //传参:int &形参 = 实参
cout << iNumber << endl;
//1.传常量
//但是像这样是不行的:modiFy(1) 传参:int &1 = 实参 这是不可能的
用const,不过一旦用了const,意味着不能修改形参值
print(1);
//2.用两个&&
printA(1);
//2.当作函数返回,返回一个变量,增加左值使用
girl myGirl = {"MM" , 18 };
cout << myGirl.age << "\t" << myGirl.name << endl;
myGirl.getAge() = 13; //此时age已修改
cout << myGirl.age << "\t" << myGirl.name << endl;
system("pause");
return 0;
}