3.9.3 指针的赋值和使用
在得到一个指针变量之后,指针变量的值还是一个随机值。这个值可能是内存中无关紧要的数据,也可能是重要的数据或者程序代码,如果直接使用是很危险的,所以在使用指针之前,必须对其进行赋值,将其指向某个有意义的数据或代码。对指针变量进行赋值的语法格式如下:
指针变量 = 内存地址;
可以看到,对指针变量的赋值,实际上就是将这个指针指向某一内存地址,而这个内存地址上存放的就是这个指针想要指向的数据。通常我们用一个变量来保存数据,那么该如何方便地得到一个变量在内存中的地址呢?反过来,如果知道一个指针,又如何取出存放在其中的数据呢?为了解决这两个问题,C++提供了两个与内存地址相关的运算符——“&”和“*”。
1. “&”运算符
“&”称为取地址运算符,如果把它放在一个变量的前面,则可以得到该变量在内存中存放的地址。例如:
// 定义一个整型变量
int N = 703;
// 取得整型变量的地址并将其赋值给整型指针
int*pN = &N;
通过“&”运算符可以取得N这个整型变量的内存地址,然后将其赋值给指针pN,也就是将指针pN指向N这个整数数据,如图3-7所示。
图3-7 指针和指针所指向的数据