指向数组的指针的增量



我试图理解为什么以下C++代码无法编译

int main () {
  int a[10];
  int (*p)[10] = &a;
  int *q = static_cast<int *>(++p);
}

如果不是很明显,我试图做的是使用指针算法找到指向数组末尾的指针。

到目前为止,我的理解是p具有指向十个整数数组的类型指针,表达式++p也是如此。 通常,我可以将整数数组分配给指向 int 的指针类型的变量,但这在递增的指针 ++p 上失败。

我第一次尝试没有static_cast但这也不起作用。

p具有指向十个整数数组的类型指针

这是正确的。

通常,我可以将整数数组分配给指针类型的变量 到 int

这也是正确的。除了,如果你比较你的两个语句,你应该看到明显的区别:p不是整数数组,它是一个指向整数数组的指针。因此,差异。

现在,如果您取消对该指向数组的指针的引用,则结果将是一个表达式,其类型为数组(松散地说),并且可以衰减到指针:

int *q = static_cast<int *>(*++p);

相关内容

  • 没有找到相关文章

最新更新