一:指针的定义:
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:引用的内部是使用指针来实现的,引用是受限制的指针。