1

有人可以解释以下行:

const void *const *ptr; 

类型和 Ptr 变量是否都是常量?

4

2 回答 2

2

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 */
于 2012-08-13T13:41:15.380 回答
1

从我的脑海中:

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 所在的地址也不能改变(第二个常量)。但我对此并不完全确定。

于 2012-08-13T13:45:12.177 回答