指针

指针,是C/C++语言中的一个重要概念及其特点。指针也就是内存地址,它允许你直接操作内存地址。指针可以用来访问和修改内存中的数据,实现动态内存分配,以及实现一些高级编程技术,比如函数指针、指针数组等。

在计算机中,所有的数据都是存放在存储器中的,不同的数据类型占有的内存空间的大小各不相同。内存是以字节为单位的连续编址空间,每一个字节单元对应着一个独一的编号,这个编号被称为内存单元的地址。比如:int 类型占 4 个字节,char 类型占 1 个字节等。系统在内存中,为变量分配存储空间的首个字节单元的地址,称之为该变量的地址。地址用来标识每一个存储单元,方便用户对存储单元中的数据进行正确的访问。在高级语言中地址形象地称为指针。

Microsoft文档 C++指针

声明指针变量

1 . 我们可以声明一个指针变量用来专门存储一个值的内存地址。
2 . 指针变量是一个特殊的变量,只能用来存储指针类型的值
3 . 我们只需要在正常声明变量的基础上,在变量名前面加一个*号即可,例如:

1
2
// 创建指针变量
int * pointer;

4 . 这样,我们就声明了一个用于存放整数类型的指针变量

赋值

指针是一个变量,可以存储一个对象的内存地址。

1 . 由于指针变量只能存储指针类型,也就是内存地址,所以我们要先获取到一个变量的内存地址。
2 . 我们只需要在赋值的时候,在前面加个&符号。
3 . 例如:我们想将num的内存地址赋值给x,赋值的时候要在num前面加个&符号。

1
2
3
int num = 17;
int * x;
x = #

4 . 要注意的是:如果创建的整数型指针类型,那么只能存入整数型内存地址

基本操作

输出地址

1 . 输出地址:

1
2
3
int num = 17;
int * x = #
cout << x << endl;

2 . 因为x已经是一个指针类型了,所以可以直接放输出语句内
3 . 最终它会输出一个如0x61fe14这样的地址,这是一个十六进制的地址,也就是num的值所存储的内存地址。
3 . 当然了,如果我们再往x前面再加一个*号,那它输出的就是变量num的值,这就相当于负负得正的思维逻辑。

1
cout << *x << endl;

修改值

1 . 根据上面负负得正的思维逻辑,我们在x前面再加一个*号,将它重新赋值为17,那么它将直接修改变量num值,结果输出为18。

1
2
3
4
int num = 17;
int * x = &num;
* x = 18;
cout << *x << endl;