"int* const* num"是什么意思?

What does "int* const* num" mean?

本文关键字:意思 是什么 const int num      更新时间:2023-10-16

可能重复:
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();相等吗?

从右到左阅读:

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"。