有人可以解释以下行:
const void *const *ptr;
类型和 Ptr 变量是否都是常量?
后
const void *const *ptr;
你可以改变ptr
,但不能*ptr
,或者**ptr
ptr = <SOMETHING_ELSE>; /* ok */
*ptr = <SOMETHING_ELSE>; /* error */
**ptr = <SOMETHING_ELSE>; /* error, ignoring the point that you cannot even have an object of type void */
从我的脑海中:
void * const var; // The pointer is constant and var can change
const void * var; // The pointer can change but not var
所以我认为你的语法
const void * const *ptr;
表示 ptr 是指向指针的指针。所以 ptr 将指向一个地址并且该地址不能改变(第一个常量)。ptr 所在的地址也不能改变(第二个常量)。但我对此并不完全确定。