【问题标题】:Pointer to an array of pointers is it?指针数组是指针吗?
【发布时间】:2012-08-13 13:36:12
【问题描述】:

有人可以解释以下行吗:

const void *const *ptr; 

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

【问题讨论】:

标签: c


【解决方案1】:

之后

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 */

【讨论】:

  • const 与否,无论如何,取消引用指针都会出错(**ptr),因为它是指向不完整类型的指针。 ;-)
【解决方案2】:

我的想法是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多