Pointers, again…
How many pointers you can have?
C89: 12
Week3135 (07/2908/31)
網路文章
What is the difference between const int*, const int * const, and int const *?
Read it backwards (as driven by Clockwise/Spiral Rule):int* - pointer to intint const * - pointer to const intint * const - const pointer to intint const * const - const pointer to const int
Now the first const can be on either side of the type so:const int * == int const *const int * const == int const * const
If you want to go really crazy you can do things like this:int ** - pointer to pointer to intint ** const - a const pointer to a pointer to an intint * const * - a pointer to a const pointer to an intint const ** - a pointer to a pointer to a const intint * const * const - a const pointer to a const pointer to an int
const X* p means “p points to an X that is const”: the X object can’t be changed via p.X* const p means “p is a const pointer to an X that is non-const”: you can’t change the pointer p itself, but you can change the X object via p.const X* const p means “p is a const pointer to an X that is const”: you can’t change the pointer p itself, nor can you change the X object via p.