详解c++中引用与指针的区别

一:指针的定义:

1:指针是用来存放地址的一个变量,其中他存放的地址和存放地址中的数据都可以被更改。除非你这样(const int * const p = 12) 首先我们定义指针时通常是: int * p = 10

2: 可以知道p是一个指针变量,里边存储的是数值10所在内存单元的地址,*的含义即是用于执行间接访问的一个单目运算符,他可以去访问p中的地址从而得到10这个值。

二:引用的定义:

1:引用是给另外一个变量起别名,所以引用不会分配内存空间;

2:引用是声明方法:类型标识符& 引用名 = 目标变量名;(eg: int& tem=num;)。

三:指针与引用的区别

1:指针是一个实体,需要分配内存空间;而引用只是变量的别名,不需要分配内存空间。

2:引用在定义的时候必须进行初始化,且不能改变,任何情况下都不能使用指向空值的引用,必须指向某些对象;而指针在定义的时候可以不初始化,且指向的空间可以改变。

3:指针和引用的自增运算的结果不一样。指针是指向下一个空间,引用是引用的变量值+1。

4:sizeof引用得到的结果是引用对象的大小,而sizeof指针得到的是指针本身的大小。

5:有多级指针,但是没有多级引用,只有一级引用。

四:相关代码说明

#include <iostream>
using namespace std;

int main()
{
int b=3;
int& a =b;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "b id=" << &b << endl;
cout << "a id=" << &a << endl;
return 0;
}

运行结果为:


能够发现a和b的地址是一模一样的,也就是说并没有为b分配内存空间,它只是a的一个别名而已。

五:引用与指针的联系

1:都和地址有关系,指针是指向一块内存的,而引用是一块内存的别名;

2:引用的内部是使用指针来实现的,引用是受限制的指针。


猜你喜欢

转载自blog.csdn.net/leikun153/article/details/80527214