"const "一词即常数,意味着在编程语言中对任何变量值 "没有变化"。编程中的指针指的是一个变量,它指向某个特定的地址,可能是某个变量的地址。恒定指针将是一个永远指向同一地址方向的指针。这意味着指针所指向的变量的地址至今不能被更新。因此,在这篇文章中,我们将看到什么是C++中的常量指针以及它是如何工作的。所以,让我们有一个好的开始。
例子 1: 指针
让我们举出第一个例子来证明常量指针是如何在终端外壳中工作的。首先,在你的Linux发行版中打开shell控制台程序。你可以使用Ubuntu 20.04桌面上的 "Ctrl+Alt+T "快捷键来完成。在打开shell之后,让我们有一个新的C++文件的创建。所以,到目前为止,这里将使用 "触摸 "查询。在 "touch "指令中提到一个你想创建的文件的名字,扩展名为".cc"。
创建文件后,你可以很容易地从你的Linux系统的主文件夹中打开你的文件。为了在shell内编辑和更新它,你必须利用一些编辑器模块。如果你没有,可以尝试安装 "GNU nano "编辑器或Vim编辑器。如下面的附图所示,我们一直在使用 "nano "编辑器在shell中打开新做的 "const.cc "命令。
$ touch const.cc
$ nano const.cc

该文件将在GNU Nano编辑器中被打开,是空的。在我们的第一个例子中,我们将首先看到一个简单的指针变量的工作,以更多地了解常数指针。因此,通过使用 "include "关键字,在开头加上一个哈希符号,添加所需的库,即标准输入输出流头和stdio头。你必须用 "using "一词来定义标准命名空间。在这之后,main()方法将被启动,因为我们必须在其中完成所有工作。此外,编译和执行也从这里开始。初始化一个整数变量 "a",给它分配一个整数值,即98。
cout "流被用来显示变量 "a "的值。此后,一个整数类型的指针 "ptr "被初始化,指向整数变量 "a "的地址。由于这个指针,我们可以改变变量 "a",因为两者现在都不是常数。 在这之后,指针 "ptr "被显示出来,也就是变量 "a "的地址。在下一行,我们使用了增量运算符来增加指针 "ptr "的地址值,因为它正指向变量 "a "的地址。
指针 "ptr "在 "cout "流的帮助下再次被显示。下一个 "cout "流被用来再次显示变量 "a "的值,即增加了一个。代码到此结束。保存新创建的代码并使用键盘上的 "Ctrl+S "和 "Ctrl+X "离开GNU Nano编辑器。

让我们先编译这段新制作的C++代码。使用 "g++"编译器来完成。如果你的系统中还没有安装这个编译器,请先尝试配置它。编译成功后,使用"./a.out "命令使你的代码运行。你会看到,当第一个 "cout "语句被执行时,它将显示一个变量 "a "的值,即98。
在执行第二个和第三个 "cout "流时,它显示了保存在指针 "ptr "中的相同地址,该指针指向变量 "a"。增量已经通过指针 "ptr "在变量 "a "的值上执行。因此,在执行第4条 "cout "语句时,变量 "a "的增量值已经显示在终端屏幕上。
$ g++ const.cc
$ ./a.out

例2:常数指针指向整数
以上就是关于简单的指针指向某个变量地址的例子。现在,让我们来看看使用常量型指针指向某个变量的例子。我们知道,当常数这个词被应用于某个变量时,它意味着 "没有变化"。因此,我们将把它作为一个指针变量来使用,看看常量指针在某些情况下会有什么表现。因此,我们用 "gnu nano "编辑器打开了同一个文件,并稍稍更新了它的代码。
指针的初始化行已经更新了,在其开始处加上了 "const "一词和 "*"符号。确保在指针 "cptr "的初始化中的数据类型 "int "之后使用它。然后,我们使用 "cout "语句来增加变量 "a "的值,因为指针 "cptr "正指向它。下一个cout语句已经被初始化为增加指针 "cptr "本身。这将导致编译错误,因为 "cptr "本身是常数。其余的代码保持不变,并使用 "Ctrl+S "进行保存。

当我们编译了 const.cc 文件的代码后,它在第 10 行给了我们错误。 由于指针是常数,错误指出 "cptr "是只读的,不能像预期的那样递增。
$ g++ const.cc

当我们编译了这段代码后,变量 "a "已经显示了它的原始值和更新值。而 "cptr "指针的地址是相同的,没有修改。
$ ./a.out

例子3:常数指针指向常数整数
在这个例子中,我们将把指针和它所指向的整数都作为常数。这意味着两者都不能被更新。所以,打开同一个文件,使其成为最新的。我们已经初始化了一个常数类型的整数 "b",其值为13。这个变量已经通过 "cout "语句显示出来了。然后,我们已经初始化了一个恒定类型的指针 "cptrC",用"&"号指向恒定变量 "b"。cout语句被用来显示指针 "cptrC"。之后,常量变量 "b "的值将被常量变量 "cptrC "递增。
在下一个连续行中,指针 "cptrC "本身已经被递增。这两行的增量都会在编译时显示错误。最后两条cout语句被用来显示常量变量值和常量指针的值。

编译该代码后,我们在两行增量处都出现了错误,即9和10。
$ g++ const.cc

因此,当代码在"./a.out "指令的帮助下执行时,我们得到了上一个例子的旧结果,而代码没有被执行。
$ ./a.out

结论
最后,我们已经完成了C++中常量变量的工作。我们讨论了简单的指针、指向整数的常数指针和指向常数的常数指针的例子,以提高对指针的理解程度。我们使用了 "cout "语句、增量运算符和&运算符来实现这一目标。我们希望这篇文章对Ubuntu 20.04系统中的C++新用户和已经有经验的用户同样有益。