C++(The Cherno)-Day4

C++(The Cherno)-Day4

POINTERS in C++

指针是一个整数,一个数字,它存储一个内存地址,这就是指针

指针的定义如下:

int* ptr = NULL;

其中NULL是库里定义好的,用来定义一个空指针,代码如下:

#define NULL 0

上面的指针也可以这么定义为空指针:

int* ptr = 0;

dereferencing(解引用)

指针也可以被定义为void类型,代码如下:

int a = 5;
void* ptr = NULL;
ptr = &a;

这样做也是行得通的,但是我们如果要对指针修改则就会报错。

这样,我们就得对指针的类型重新进行声明了

指针的类型用来对存储的地址里的数据作修改

因此我们可以将上述代码修改为如下,我们便可以对指针指向地址的数据进行修改了:

int a = 5;
int* ptr = NULL;
ptr = &a;
*ptr = 10;

指针是一个整数,一个数字,它存储一个内存地址 That`s All

REFERENCES in C++

引用只是基于指针的一种语法糖,来使代码更易读更好学,其实就是给某个变量一个别名

注意事项

  1. 引用必须使对某物的引用,引用本身不是一个变量
  2. 声明一个引用时,必须将一个实际的变量赋值给它

引用使用代码如下:

int a = 5;
int& ref = a;
ref++;
cout << "a = " << a << endl;
cout << "ref = " << ref << endl;

代码运行结果如下:

a = 6
ref = 6

但是,当我们把代码修改如下:

int a = 5;
int& ref = a;
int b = 8;
ref = b;
cout << "a = " << a << endl;
cout << "ref = " << ref << endl;

输出结果就变为了:

a = 8
ref = 8

上面两段代码恰好印证了引用是对一个变量的别名,而它不是一个变量

如果我们使用一个函数来对变量进行自增自减的操作,如果使用上面的指针我们就要写代码如下:

void Incement(int* value)
{
	(*value)++;
}

int main() 
{
	int a = 5;
	Incement(&a);
	cout << "a = " << a << endl;
	cin.get();
	return 0;
}

如果我们不使用指针,那么函数会创建两个变量,而达不到我们对传入变量值的修改,这就是所谓形参与实参的知识。

那么,当我们使用引用时,代码则可以写为如下:

void Incement(int& value)
{
	value++;
}

int main() 
{
	int a = 5;
	Incement(a);
	cout << "a = " << a << endl;
	cin.get();
	return 0;
}

代码是不是比之前的更简洁易读了呢,这就是使用引用的好处。

引用和指针的区别在于,指针直接指向变量的内存地址(简单粗暴),引用则是明修栈道,暗度陈仓(个人理解)

**Amazing!**代码妙不可言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值