C 指向指针数组的指针是吗?

C 指向指针数组的指针是吗?,c,C,有人能解释下面这句话吗 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

有人能解释下面这句话吗

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 */
ptr=;/*嗯*/
*ptr=;/*错误*/
**ptr=;/*错误,忽略甚至不能拥有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所在的地址也不能更改(第二个常量)。但我不能完全确定这一点。

您可能会发现有用的方法。无论是否重复
const
,您都会在取消引用指针时出错(
**ptr
),因为它是指向不完整类型的指针。;-)