在C++中,指针是一种特殊的变量,它存储的是另一个变量的内存地址。指针对于理解和使用C++语言至关重要,因为它们提供了直接访问内存和操作内存地址的能力。
首先来定义一个指向整型数据(int)的指针。在C++中声明一个整型指针可以使用以下语法:
int* ptr;
这里,ptr 是一个变量名,而 int* 表示 ptr 是一个可以保存整数类型地址的指针。请注意星号(*)紧跟类型名表示这是一种特殊类型——“整数类型数据的地址”。
接下来讨论如何初始化这个指针:
int value = 10;
ptr = &value;
上述代码首先创建了一个名为 value 的普通整型变量,并赋予了值10。然后通过取址操作符(&),我们获取了 value 的内存地址,并将其赋给之前声明好的 ptr. 这样, ptr 就包含了 value 变量所在位置。
现在我们已经有个包含有效内存地址值得到 ptr, 我们可能想通过它来获取或者修改该位置上实际保存得到数据——即 value 变量里面得到内容。
要解引用(ptr)并获取其所对应位置上实际保存得内容, 我们需要使用解引用操作符(*):
int data = *ptr; // data 现在等于 10.
此时 * 操作符不再表示声明时候那样代表“某种类型地址”,而是作为解引用操作符出现,在表达式中出现时代表“取该处储藏地内容”。
如果想修改原始变更(value)里面储藏地内容也往往会通过直接对 ptr 进行解引用然后赋值:
*ptr = 20; // 现将会改成20.
此处再次出现 * 操作符作为左值(l-value),意味着我们不仅读取那个位置上原有地信息还要写入新信息进去。