可能重复:
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();
是否相等?
答案 0 :(得分:3)
你从右到左阅读:
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
显然已被破译为“*a
是int
,并且b
是int
“。