C++新手.关于常量指针的问题

5 c++ pointers const

我正在尝试通过一些网络教程学习C++.我没有可用的编译器,否则我会尝试这个.我不确定const指针是什么意思.这只是意味着它总是指向相同的内存地址吗?你为什么要这样做?以下代码是否合法?

...
int * const aPointer = new int;
... //do something with aPointer
delete aPointer;
... //do something else, including possibly more 'new' statements
aPointer = new int;
...
Run Code Online (Sandbox Code Playgroud)

Jef*_*f L 18

记住const如何使用指针的简单方法是记住它总是适用于它左边的任何内容,除非它是最左边的关键字,在这种情况下它适用于右边.

例子:

指向常量char 的指针:指针可以更改为指向其他内容,但它最初指向的char不能更改值.

const char * p;
Run Code Online (Sandbox Code Playgroud)

指向char的常量指针: 指针不能更改为指向其他任何指针,但它指向的char可以更改值.

char *const p;
Run Code Online (Sandbox Code Playgroud)

指向常量char的常量指针: 指针不能更改为指向其他任何内容,并且它指向的char不能更改值.

const char *const p;
Run Code Online (Sandbox Code Playgroud)


Eva*_*haw 9

Const指针可能意味着一些不同的东西.我建议在这个问题上查看C++ FAQ Lite.

你可以有:

const int* p;
int* const p;
const int* const p;
Run Code Online (Sandbox Code Playgroud)

这三个意味着不同的东西.是的,这有点令人困惑.

在你的情况下,你有第二个,这意味着你有一个指向非常量对象的常量指针.也就是说,您可以通过指针更改整数的值,但不能更改指针指向的内容.所以你发布的代码不合法​​.


Jam*_*son 1

const 指针意味着您可以更改所指向变量的值,但不能更改指针所指向的位置。我自己并不经常使用它们,但 const 指针的一个常见应用是定义需要寻址的特定内存段。请参阅此问题以获取更多信息。

顺便说一句,如果可以的话,您应该尝试在计算机上安装编译器。我已经多次向自己证明,人脑是糟糕的 C++ 编译器。