【发布时间】:2020-03-03 10:12:25
【问题描述】:
指向常量 int 的指针。我可以改变指针,但我不能改变值:
const int* a;
指向 int 的常量指针。我可能不会改变指针,但我可能会改变变量的值:
int* const a;
现在,如果我正在处理指向指针的指针,情况会如何?
int** a;
我该怎么做:
a) 声明一个 const 指针,指向一个非常量 int 的非常量指针
b) 声明一个非常量指针,指向一个非常量 int 的 const 指针
c) 声明一个指向 const int 的非常量指针的非常量指针 ?
【问题讨论】:
-
我建议使用 typedef。很多类型定义。许多类型定义相互构建。足够多的类型定义,以至于你讨厌生活到这样的程度,以至于你在未来避免了这种愚蠢。是的,区别可能很重要。不,我从未见过重要的生产代码。
-
公平地说:“我从来没有注意到重要的代码”,在我 20 多年的程序员职业生涯中,其中大部分时间都花在了 C++ 中。
-
这更多是为了我对 const 正确性的理解,而不是为了编写生产代码。当我尝试用动态分配的
static char** foo替换静态分配的static const char* foo[1000]并且编译器不允许我将字符串文字分配给 foo 的元素时,我确实偶然发现了它 -
const关键字绑定到紧靠其左侧的事物。 (除非const最先出现,在这种情况下,它会绑定到其右侧的事物。)
标签: c++ pointers constants const-correctness