说我们有这样的声明:
int **const*** k;
然后,它可以很好地翻译(根据cdecl.org)到
将k声明为指向指向指针的const指针的指针 到int
然而,我仍然不确定它不允许的是什么?哪个操作受到限制?我们还能做吗
(***k)++
换句话说,在那里添加const的效果是什么?
并且......同样的问题
int *const**const* k;
它会有什么不同?
谢谢!
答案 0 :(得分:4)
仍然,我不确定它不允许什么?
它不允许***k
指向的修改。
我们还能做吗
(***k)++
否即可。你不能。这是因为***K
是指向指向const
指针的指针的指针,您无法修改它。但是,对K
,*k
,**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.
int **const ***k; // ***k is a const pointer to integer. No modification to ***k.