← Back to context

Comment by ericye16

9 years ago

What happened to the const in the second example?

The pointer itself is const; not what it points to.

    bar  -> const pointer to mutable array of ints
    *bar -> mutable array of ints

And const pointers are dereferenced with * , not (* const), so the rule needs an exception for const pointers (as well as volatile pointers).

That const applies only to the bar symbol itself, not to anything it points to. So once bar is dereferenced, the const doesn't matter. The beauty of this method is that it predicts that correctly without having to think about it.

Yeah, I think they confused

  const *

with

  * const

  • Nope, * const means that the identifier (i.e. thing to the right of the star) is const. That is, in this example, the symbol "bar" is const, not anything that it points to. So once you dereference it, the const no longer matters.

    • You're right, I got confused. const is read as "the thing to the right of me is const". const * means const pointer, * const means pointer to const.

      2 replies →