指针和引用
昨天发布 信奥算法之数据结构——认识数组 后,在写数组应用的过程中,老韩觉得还是应该将指针和引用先讲明白。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的值。
首先,看这个符号,这个符号直接放到变量之前,代表的就是取地址,取它后面跟着的变量的内存地址。
一条评论
发表新评论
- Pingback: 数组