我了解Java中的final或C++中的const的概念,这些概念用于强制使用常量值,并允许编译器在使用您编写的模块的任何人上强制执行该值。

我看不到想要在哪里放置const指针的原因,为什么无论数据是否恒定,都不想更改指针:

例如

为什么这个?

char greetings[] = "Hello";

char * const p = greetings;  // const pointer, non-const data

const char * const p = greetings; // const pointer and const data

我无法可视化您想保留指针const的地方,可能是文件句柄还是类似的东西?还是只是指向您不想更改的对象的指针?

最佳答案

出于以下几个原因,您可能希望使指针本身恒定不变:

  • 帮助他人理解您的代码-当您声明一个指针并将其保持不变时,您会告诉读者在该函数的其余部分中对该指针没有做任何更改,因此他们会更好地了解如何使用指针。
  • 帮助他人维护您的代码-在您之后维护代码的其他人将对您希望如何使用指针有更好的了解。如果他尝试传递非恒定引用或指向您声明了const的指针的指针,则编译器将捕获此错误。
  • 启用编译器优化-当编译器看到声明为const的内容时,他们可以更加积极地进行优化。
  • 07-24 09:45
    查看更多