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
),因为它是指向不完整类型的指针。;-)