#include <iostream>
#define LOG(x) std::cout << x << std::endl
int main()
{
int a = 5;
int& ref = a;
ref = 2;
LOG(a);
std::cin.get();
}
引用其实就是变量的一种别名,在上面的例子里首先我们让a=5 ,然后给a记了一个别名ref 最后让ref=2 其实就是 a=2改变了a的值,最后打印a的值是2。
#include <iostream>
#define LOG(x) std::cout << x << std::endl
void Increment(int value)
{
value++;
}
int main()
{
int a = 5;
int Increment(a);
LOG(a);
std::cin.get();
}
//指针修改
#include <iostream>
#define LOG(x) std::cout << x << std::endl
void Increment(int* value)
{
//地址++
//*value++;
//值++
(*value)++;
}
int main()
{
int a = 5;
Increment(&a);
LOG(a);
std::cin.get();
}
//引用的修改
#include <iostream>
#define LOG(x) std::cout << x << std::endl
void Increment(int& value)
{
value++;
}
int main()
{
int a = 5;
Increment(a);
LOG(a);
std::cin.get();
}
我们看一下这个代码,他会成功打印出6嘛?显然是不会的。那如果或要打印出来为6这个函数应该怎么改:我们首先要用指针把这个变量的地址先传过去,通过地址来对变量的值进行改变,当拿到变量的地址后进行一个逆向引用得到变量的值后自增。这样就能打印出6了这个是指针的方法,引用的方法就是给a取个别名value 然后value++ 就和a++ 一样的。
另外需要说明的是,当你使用1、引用时要初始。2、你不能改变它引用的东西(像下面这个例子)
int main()
{
int a = 5;
int b = 7;
/* int& ref = a;
ref = b;
结果就是 a =7 b = 7 */
int* ref = &a;
*ref = 2;
ref = &b;
*ref = 1;
LOG(a);
LOG(b);
std::cin.get();
}