still, I'm not sure to understand what it does not permit?
It does not permit the modification that ***k
points to.
Could we still do
(***k)++
No. You can't. This is because ***K
is a pointer to pointer to pointer to const
pointer and you can't modify it. But yes, modification to K
, *k
, **k
is valid.
For the sake of convenience, you can understand this as follows:
int *const k; // k is a const pointer to integer. No modification to k.
int *const *k; // *k is a const pointer to integer. No modification to *k.
int *const **k; // **k is a const pointer to integer. No modification to **k.
int *const ***k; // ***k is a const pointer to integer. No modification to ***k.
int **const ***k; // ***k is a const pointer to integer. No modification to ***k.