指针和引用

作者: 老韩 分类: C++,信奥赛 发布时间: 2024-05-20 08:36

昨天发布 信奥算法之数据结构——认识数组 后,在写数组应用的过程中,老韩觉得还是应该将指针和引用先讲明白。C++中的指针和引用是C++能够操作内存的一个重要原因。

先来讲一个小故事:

话说小明小时候在后山挖了一个坑,埋了一块宝贝。为了不让别人发现,小明将这个坑的位置(地址)记录在了一张纸上面。小明只要保留好这张纸条,就能很快且准确地找到​坑,进而找到他埋藏的宝贝。

但是过了几天,小明发现这样纸容易丢失损坏,于是呢就做了个皮质手机壳,把坑的位置记录在这个手机壳上,这样,​没人太在意的手机壳就更安全了一些。

​现在先忘掉上面的小故事。我们看看指针和引用的定义和特点​。

​指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,可以理解成一个实体;

而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。

指针是地址,引用是别名​!

下面是一段完整的代码,可以用来理解上面这句【指针是地址,引用是别名】。​

#include <iostream>
#include <typeinfo>
using namespace std;

int main(){
	int number = 100; // 定义一个数字类型变量number
	int* p1 = &number; // 指针p1 指向number的地址
	int& v1 = number; // 引用v1 就是number的引用
		
	cout<< p1 <<endl; // 变量number的地址
	cout<< *p1 <<endl; // 变量number的值
	cout<< &p1 <<endl; // 指针p1的地址
	cout<< v1 <<endl; // v1是number的引用,打印它就是可以认为就是在打印number
	cout<< &v1 <<endl; // 引用v1的地址,等价于number的地址
	
	return 0;
}

上面程序的运行结果如下图:

可以看到,分别打印了3次两个不同的十六进制地址,两次变量number的值。

首先,看这个符号,这个符号直接放到变量之前,代表的就是取地址,取它后面跟着的变量的内存地址。

 

 

一条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据