【问题标题】:What does "int* const* num" mean? [duplicate]“int* const* num”是什么意思? [复制]
【发布时间】:2012-12-27 09:51:32
【问题描述】:

可能重复:
what is the difference between const int*, const int * const, int const *

我在阅读 FLTK 代码时碰到这行代码:

Fl_Widget*const* a = array();

这是实际代码:

Fl_Widget*const* Fl_Group::array() const {
    return children_ <= 1 ? (Fl_Widget**)(&array_) : array_;
}

int Fl_Group::find(const Fl_Widget* o) const {
    Fl_Widget*const* a = array();
    int i; for (i=0; i < children_; i++) if (*a++ == o) break;
    return i;
}

现在我想知道指针变量a 的类型是什么。 Fl_Widget*const* a = array();Fl_Widget** const a = array(); 是否相等?

【问题讨论】:

标签: c++ pointers constants


【解决方案1】:

你从右到左阅读它:

Fl_Widget      *            const            *              a
          "pointer to" <- "constant" <- "pointer to"  <- "a is"

总结起来就是“a是一个指向Fl_Widget的常量指针”。

VAR a: POINTER TO CONST POINTER TO Fl_Widget 风格的声明会更清晰一些,但 C++ 将他的变量声明语法从 C 中拖了出来,而 C 完全是关于表达式,而不是数据类型。哎呀,它甚至没有const这个词,所以你不必考虑它,int *a, b显然被破译为“*aintbint” .

【讨论】:

  • 感谢您的精彩回答 :)
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 2017-07-08
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2016-03-09
相关资源
最近更新 更多