C++引用和指针

#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();

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值